在Linux上运行Java时出错:无法找到或加载主类
我得到了上面的错误,答案没有帮助 基本上,我似乎无法运行用Java编译的文件。我试图运行的文件HowMARK_II_fitsinbrainanalogy.java是 我正在使用以下命令编译所有需要的.jar和当前目录,并在末尾的在Linux上运行Java时出错:无法找到或加载主类,java,classpath,command-line-arguments,jvm-arguments,Java,Classpath,Command Line Arguments,Jvm Arguments,我得到了上面的错误,答案没有帮助 基本上,我似乎无法运行用Java编译的文件。我试图运行的文件HowMARK_II_fitsinbrainanalogy.java是 我正在使用以下命令编译所有需要的.jar和当前目录,并在末尾的-cp参数中使用:.: javac-cp/home/ugrads/majors/quinnliu/workspace/hunutaiq/build/libs/hunutaiq.jar:/home/ugrads/majors/quinnliu/workspace/hunut
-cp
参数中使用:.
:
javac-cp/home/ugrads/majors/quinnliu/workspace/hunutaiq/build/libs/hunutaiq.jar:/home/ugrads/majors/quinnliu/workspace/hunutaiq/referencedLibraries/gson-2.2.4.jar:。HowMARK_II_如何与TobrainAnatomy.java相匹配
因此,在使用上述命令后,我创建了编译文件HowMARK_II_fitsintobrainanalysis.class
,但以下运行该文件的命令在该问题的标题中给出了错误:
java-cp/home/ugrads/majors/quinnliu/workspace/walnutaiq/build/libs/walnutaiq.jar:/home/ugrads/majors/quinnliu/workspace/walnutaiq/referencedLibraries/gson-2.2.4.jar:。model.MARK_II.vision.MARK_II如何与人体解剖学相适应
当我在我的-cp
中添加:。
时,我看不出我做错了什么
package model.MARK_II.vision;
这意味着您必须指定完全限定名才能运行它
java -cp /home/ugrads/majors/quinnliu/workspace/WalnutiQ/build/libs/WalnutiQ.jar:/home/ugrads/majors/quinnliu/workspace/WalnutiQ/referencedLibraries/gson-2.2.4.jar:/home/ugrads/majors/quinnliu/workspace/WalnutiQ/experiments/model/MARK_II/vision/junit-4.11.jar:. model.MARK_II.vision.HowMARK_II_FitsInToBrainAnatomy
当然,它也需要一种方法
public static void main(String[] args)
作为入口点。使用java
运行时,必须指定完全限定名(即,与包一起)。因此,如果要运行的类是HowMARK_II_fitsintobrainanalysis
,其包是model.MARK_II.vision
,则必须运行:
java -cp <...> model.MARK_II.vision.HowMARK_II_FitsInToBrainAnatomy
java-cp model.MARK_II.vision.HowMARK_II_如何适应RainAnatomy
如果HowMARK_II_fit-to-rainanalysis
在model.MARK_II.vision
包中,文件HowMARK_II_fit-to-rainanalysis.class
必须在文件系统的model/MARK_II/vision
目录中
java -cp jars-to-add:. model.MARK_II.vision.HowMARK_II_FitsInToBrainAnatomy
因为你的类有这样的包声明
package model.MARK_II.vision;
您需要使用完全限定的类名来调用该类中已在执行的main()
,但还需要从正确的目录执行命令
我想您已经在model/MARK_II/vision
目录中了,当您调用这个javac
命令时,您需要从这个目录中出来,从一个包含所有这些目录的目录执行命令,如下所示
DirectoryToExecute
--model
--MARK_II
--vision
--HowMARK_II_FitsInToBrainAnatomy.class
因此,我建议您cd
到该目录,然后调用上面的命令,然后它就会工作:)
请看一看类似的问题。您需要将编译命令从
javac -cp <the jars>:. HowMARK_II_FitsInToBrainAnatomy.java
javac-cp:。如何将Mark_II_安装到ToBrainAnatomy.java
到
javac-cp:-D如何将Mark_II_安装到ToBrainAnatomy.java
这将在正确的目录中创建HowMARK_II_fitsintobrainanalysis.class
。您的类HowMARK_II_fitsintobrainanalysis不是普通的可执行类,而是JUnit测试用例。要从命令行运行JUnit测试用例,可以使用org.JUnit.runner.JUnitCore
类
编撰
javac -cp build/libs/WalnutiQ-master.jar:referencedLibraries/junit-4.12.jar:referencedLibraries/gson-2.2.4.jar:. experiments/model/MARK_II/vision/HowMARK_II_FitsInToBrainAnatomy.java
跑
java -cp build/libs/WalnutiQ-master.jar:referencedLibraries/junit-4.12.jar:referencedLibraries/hamcrest-all-1.3.jar:referencedLibraries/gson-2.2.4.jar:experiments/ org.junit.runner.JUnitCore model.MARK_II.vision.HowMARK_II_FitsInToBrainAnatomy
我从GitHub的项目根目录运行了这些。我不得不手动下载JUnit和Hamcrest您的第一个命令行表明要编译的类位于当前目录中。编译它将在同一目录中生成一个.class文件 现在,当您尝试运行程序时,您完全可以传递要运行的类的全名(包+类名);但是为了找到这个类,java应用了一个约定,即包的每个段必须对应于硬盘上的一个物理目录,从当前目录开始 因此,它将尝试在当前目录中查找
model/MARK_II/vision/
目录树,以及名为HowMARK_II_fitsintobrainanalogy.class
的文件,而不是在当前目录中查找您的类
要找到类,必须将当前目录设置为
model
的父目录,仍然将
添加到类路径中(因为它将用作查找子目录的根目录),并保持命令行不变(可能会根据需要调整附加jar的路径).请发布HowMARK_II__fit to BrainAnatomy.java
指向您的代码的链接已断开…是的。。链接断开了,但我只是发布了我的答案来解释这个问题。希望有帮助:)包名不仅仅是漂亮的;它们是java寻找类的地方。如果您的类名为model.MARK_II.vision.HowMARK_II_fitsintobrainanalysis
它必须位于类路径目录或JAR文件中的model/MARK_II/vision/
中。如果没有,您需要重新构造源目录或使用-d选项构建以将类放置在预期位置。请奖励奖金,以便此问题不再显示在下。感谢帮助,但我刚刚收到错误:无法找到或加载主类模型。MARK_II.vision.HowMARK_II_FitInToBrainAnatomy
添加main
方法,否则它将不是一个main
类。在我阅读了您的答案之后,我做了,您可以在第30行看到您是否重新编译了?然后重新创建你的jar?好主意,但我重新编译了我的jar,仍然收到了错误谢谢你的帮助,但我只是收到了错误:找不到或加载主类模型。MARK_II.vision.how MARK_II_fitsintobrainanalysis
你有没有签名public static void main(String[]args)
的方法
java -cp build/libs/WalnutiQ-master.jar:referencedLibraries/junit-4.12.jar:referencedLibraries/hamcrest-all-1.3.jar:referencedLibraries/gson-2.2.4.jar:experiments/ org.junit.runner.JUnitCore model.MARK_II.vision.HowMARK_II_FitsInToBrainAnatomy