【问题标题】:Can't run java prorgram with "java" command directly不能直接用“java”命令运行java程序
【发布时间】:2014-09-02 03:01:36
【问题描述】:

我已经编译了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                                                                                      

【问题讨论】:

    标签: linux ubuntu-14.04


    【解决方案1】:

    Java 将尝试使用您的类路径来定位类文件。由于您的类路径设置为 /usr/lib/jvm/jdk1.8.0_11,因此它看起来就是这样。

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

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

    alias jhere="java -cp $CLASSPATH:."
    

    那么我可以使用:

    jhere HelloWorld
    

    测试我的 sn-ps。

    【讨论】:

      【解决方案2】:

      因为. 不在你的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.
      

      【讨论】:

      • 我应该添加export CLASSPATH="/usr/lib/jvm/jdk1.8.0_11:."还是替换CLASSPATH=/usr/lib/jvm/jdk1.8.0_11
      • 导出命令会设置一次。如果您编辑您的/etc/environment,它将在重新启动时设置。最后,您可以在运行时使用-cp-classpath。其他常见的解决方案是启动 shell 脚本和批处理文件。
      • 对不起,我不得不接受另一个答案,因为他提供了一个更具体的解决方案,但是你们两个都有很好的答案,所以我都赞成,而我只能选择一个答案作为接受,非常感谢为您解答。
      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 2013-07-22
      相关资源
      最近更新 更多