无法使用" javax#34运行java程序;命令直接

时间:2014-09-02 03:01:36

标签: linux ubuntu-14.04

我用

编译了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                                                                                      

2 个答案:

答案 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.