在Linux上运行Java时出错:无法找到或加载主类

在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

我得到了上面的错误,答案没有帮助

基本上,我似乎无法运行用Java编译的文件。我试图运行的文件HowMARK_II_fitsinbrainanalogy.java是

我正在使用以下命令编译所有需要的.jar和当前目录,并在末尾的
-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