我用
编译了java代码razrlele@OVO:~/workspace/javastudy/src$ javac Helloworld.java
并且结果没有错误或警告
然后我用
运行程序razrlele@OVO:~/workspace/javastudy/src$ java Helloworld
它返回此
Error: Could not find or load main class Helloworld
我必须像这样输入
razrlele@OVO:~/workspace/javastudy/src$ java -cp ./ Helloworld
这样程序就会正确运行。
我对“java”命令无效的原因感到困惑。
这是我的/ etc / environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.8.0_11"
CLASSPATH=/usr/lib/jvm/jdk1.8.0_11
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_11
答案 0 :(得分:5)
Java将尝试使用您的类路径来查找类文件。由于您的类路径设置为/usr/lib/jvm/jdk1.8.0_11
,所以它的外观。
通过使用-cp ./
覆盖类路径,您可以告诉它在当前目录中查找其类文件。
有许多方法可以解决此问题,包括根据需要将类路径环境变量更改为包含.
或其他本地化路径。我倾向于只设置一个别名(例如在我的.bashrc
中),因此常规Java程序不会受到影响,例如(来自内存):
alias jhere="java -cp $CLASSPATH:."
然后我可以使用:
jhere HelloWorld
测试我的代码段。
答案 1 :(得分:3)
因为.
不在您的CLASSPATH
中,所以
export CLASSPATH="/usr/lib/jvm/jdk1.8.0_11:."
然后
javac Helloworld.java
java Helloworld
也可以在命令行中使用-cp
(-classpath
的缩写)和java
,如果你运行java -h
,你会看到
-cp <class search path of directories and zip/jar files> -classpath <class search path of directories and zip/jar files> A : separated list of directories, JAR archives, and ZIP archives to search for class files.