从命令行Linux运行Java程序

我不是很熟悉java,这让我疯狂。 我写了一个Java程序FileManagement ,我需要从命令行运行它。

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

线程“main”中的exceptionjava.lang.NoClassDefFoundError:FileManagement / Main

事情是,我已经在远程计算机上试过这个相同的过程,它工作正常。 这不是我的工作。

Solutions Collecting From Web of "从命令行Linux运行Java程序"

如果您的Main类位于名为FileManagement的包中,请尝试:

 java -cp . FileManagement.Main 

FileManagement文件夹的父文件夹中。

如果您的Main类不在包中(默认包),请cdFileManagement文件夹并尝试:

 java -cp . Main 

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

让我们来了解它的语法。

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

    java -cp。 文件名

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

    java -cp。 dir1.dir2.dir3.fileName

  3. 那么,如果存在对外部罐子的依赖,

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

    希望这可以帮助。

你班上的包名是什么? 如果没有包名称,那么最有可能的解决方案是:

 java -cp FileManagement Main 

(这是KISS的答案。)

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

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

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

 javac *.java -d . 

这将生成与.java文件关联的“包”一样多的子文件夹。 在我的情况下,所有的java文件在相同的包名称packageName ,所以只有一个文件夹是用这个名字生成的,所以要执行它们中的每一个:

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