为什么 javac 在我的 IDE 没有时抛出编译错误?
Why does javac throw compile errors when my IDE does not?
我正在使用 IntelliJ 进行 java 开发。我想 运行 我的应用程序在我只有 shell 访问权限的另一台主机上。
当我在本地 运行 我的应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到:
usr@host1:~/mp1/src$ javac -cp ../ Control.java
Control.java:10: error: cannot find symbol
private static Node genNode = null;
^
symbol: class Node
location: class Control
Control.java:25: error: cannot find symbol
genNode = new Node(hostname);
^
symbol: class Node
location: class Control
2 errors
文件Node.java
在同一目录中:
mp1
├── src
│ ├── ClientControl.java
│ ├── Control.java
│ ├── Node.java
│ ├── Registrar.java
│ ├── ServerControl.java
│ ├── UX.java
├── lib
│ └── kryonet-2.21-all.jar
我也不能在本地编译,除非它来自 IDE,所以我假设我没有做正确的事情。我错过了什么?我只是想 运行 我的应用程序来自 shell,我真的不在乎如何。
编译时必须正确设置类路径。
你的类路径有问题。因为您只将父目录设置为您的类路径。您还必须包括 src
,因为它包含您的其他源文件。
尝试:
javac -cp .:../lib/kryonet-2.21-all.jar Control.java
找到/usr/lib/jvm/java-1.x.x-openjdk
vim /etc/profile
添加这两行:
export JAVA_HOME="path that you found"
export PATH=$JAVA_HOME/bin:$PATH
更多参考你可以尝试:- How to set JAVA_HOME in Linux for all users
我正在使用 IntelliJ 进行 java 开发。我想 运行 我的应用程序在我只有 shell 访问权限的另一台主机上。
当我在本地 运行 我的应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到:
usr@host1:~/mp1/src$ javac -cp ../ Control.java
Control.java:10: error: cannot find symbol
private static Node genNode = null;
^
symbol: class Node
location: class Control
Control.java:25: error: cannot find symbol
genNode = new Node(hostname);
^
symbol: class Node
location: class Control
2 errors
文件Node.java
在同一目录中:
mp1
├── src
│ ├── ClientControl.java
│ ├── Control.java
│ ├── Node.java
│ ├── Registrar.java
│ ├── ServerControl.java
│ ├── UX.java
├── lib
│ └── kryonet-2.21-all.jar
我也不能在本地编译,除非它来自 IDE,所以我假设我没有做正确的事情。我错过了什么?我只是想 运行 我的应用程序来自 shell,我真的不在乎如何。
编译时必须正确设置类路径。
你的类路径有问题。因为您只将父目录设置为您的类路径。您还必须包括 src
,因为它包含您的其他源文件。
尝试:
javac -cp .:../lib/kryonet-2.21-all.jar Control.java
找到/usr/lib/jvm/java-1.x.x-openjdk
vim /etc/profile
添加这两行:
export JAVA_HOME="path that you found"
export PATH=$JAVA_HOME/bin:$PATH
更多参考你可以尝试:- How to set JAVA_HOME in Linux for all users