从命令行Linux运行Java程序

时间:2010-09-11 18:55:23

标签: java linux command-line

我对java不太熟悉,这让我发疯。我编写了一个java程序FileManagement,我需要从命令行运行它。

我可以使用javac FileManagement/*.java从命令行编译它,这将创建该文件夹中的所有类,但是当我尝试java FileManagement.Main时,它会说:

  

线程“main”中的异常java.lang.NoClassDefFoundError:   FileManagement /主要

问题是我在远程计算机上尝试过相同的程序并且工作正常。它不适合我的。

4 个答案:

答案 0 :(得分:21)

如果您的Main课程位于名为FileManagement的论坛中,请尝试:

java -cp . FileManagement.Main

FileManagement文件夹的父文件夹中。

如果您的Main类不在包(默认包)中,那么 cd FileManagement文件夹并尝试:

java -cp . Main

有关CLASSPATH以及JRE如何查找类的更多信息:

答案 1 :(得分:6)

伙计们让我们理解它的语法。

  1. 如果当前目录中存在类文件。

    java -cp。文件名

  2. 如果Dir中存在类文件。转到Parent Dir并在cmd下面输入。

    java -cp。 dir1.dir2.dir3.fileName

  3. 如果对外部罐子有依赖,那么

    java -cp。:。/ jarName1:./ jarName2 fileName

    希望这会有所帮助。

答案 2 :(得分:3)

(这是KISS的回答。)

假设您在当前目录中有几个.java文件:

$ ls -1 *.java
javaFileName1.java
javaFileName2.java

假设他们每个人都有一个main()方法(所以他们是程序,而不是libs),然后编译它们:

javac *.java -d .

这将生成与.java文件关联的“包”一样多的子文件夹。在我的情况下,所有java文件都在同一个包名packageName下,因此只生成了一个具有该名称的文件夹,所以要执行每个文件夹:

java -cp . packageName.javaFileName1
java -cp . packageName.javaFileName2

答案 3 :(得分:1)

您班级的包裹名称是什么?如果没有包名,那么解决方案很可能是:

java -cp FileManagement Main