无法直接用"java"命令运行java prorgram

raz*_*eLe 4 linux ubuntu-14.04

我用java编译了java代码

razrlele@OVO:~/workspace/javastudy/src$ javac Helloworld.java 
Run Code Online (Sandbox Code Playgroud)

事实证明没有错误或警告

然后我运行程序

razrlele@OVO:~/workspace/javastudy/src$ java Helloworld
Run Code Online (Sandbox Code Playgroud)

它返回这个

Error: Could not find or load main class Helloworld
Run Code Online (Sandbox Code Playgroud)

我必须像这样输入

razrlele@OVO:~/workspace/javastudy/src$ java -cp ./ Helloworld
Run Code Online (Sandbox Code Playgroud)

这样程序就会正确运行.

我很困惑为什么"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                                                                                      
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 5

Java将尝试使用您的类路径来查找类文件.由于您的类路径设置为/usr/lib/jvm/jdk1.8.0_11,它就是它的外观.

通过覆盖类路径-cp ./,您可以告诉它在当前目录中查找其类文件.

有许多方法可以解决此问题,包括.根据需要将类路径环境变量更改为包含或其他本地化路径.我倾向于只设置一个别名(在我.bashrc的例子中),所以常规的Java程序不会受到影响,比如(来自内存):

alias jhere="java -cp $CLASSPATH:."
Run Code Online (Sandbox Code Playgroud)

然后我可以使用:

jhere HelloWorld
Run Code Online (Sandbox Code Playgroud)

测试我的片段.