从命令行 Linux 运行 Java 程序

问题描述 投票:0回答:5

我对java不太有经验,这让我发疯。我写了一个java程序

FileManagement
,我需要从命令行运行它。

我可以使用

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

线程“main”java.lang.NoClassDefFoundError 中出现异常: 文件管理/主要

问题是我已经在远程计算机上尝试了相同的过程,并且工作正常。它对我的不起作用。

java linux command-line
5个回答
21
投票

如果您的

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

java -cp . FileManagement.Main

FileManagement
文件夹的父文件夹中。

如果您的

Main
类不在包(默认包)中,则 cd
FileManagement
文件夹并尝试:

java -cp . Main

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


7
投票

大家让我们来理解它的语法。

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

    java -cp 。文件名

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

    java -cp 。 dir1.dir2.dir3.文件名

  3. 如果存在对外部 jar 的依赖,

    java -cp .:./jarName1:./jarName2 文件名

    希望这有帮助。


4
投票

(这是KISS答案。)

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

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

假设它们每个都有一个

main()
方法(所以它们是程序,而不是库),然后编译它们:

javac *.java -d .

这将生成与 .java 文件关联的“包”一样多的子文件夹。就我而言,所有 java 文件都位于同一包名称下

packageName
,因此仅生成了一个具有该名称的文件夹,因此要执行每个文件:

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

1
投票

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

java -cp FileManagement Main

0
投票

单个

.java
文件的一个衬垫,称为
Main.java

javac Main.java && java -cp . Main
© www.soinside.com 2019 - 2024. All rights reserved.