当前位置: 首页 > 知识库问答 >
问题:

Java"无法找到或加载主类"与类路径错误

师成弘
2023-03-14

我在Java中用-cp或-classpath标志编译时遇到了一个问题。下面我将试着解释一下这个问题:

比方说;我有两个文件-A.java和B.java.A.java有一个简单的公共类,有一个私有实例变量,一个get和一个set方法。B.java是A的驱动方法。它实例化A;为A的实例变量设置一些值,最后使用A中的get方法打印出该值。

我可以从命令行编译A.java和B.java。如果两个编译的类文件在同一个文件夹中;以下运行良好:

java B

然而;假设我在一个单独的文件夹中保存了一个. class。甚至更好;我现在创建一个类文件A.class .的JAR文件;我应该能够用正确声明的类路径编译B.java。

编译有效。

< code>javac -cp..\Lib\A.jar -d..\Bin B.java

它按照预期将B.class文件放在Bin文件夹中。现在;如果我转到Bin文件夹并尝试执行以下命令:

java -cp ..\Lib\A.jar B

我收到错误:

Error: Could not find or load main class B

现在;过去几天我一直在徒劳地尝试解决这个问题。这是一个简单的用例来演示这个问题;但实际上——我无法使用-classpath或-cp标志链接到现有的JAR库。我可以从命令行运行我的Java程序的唯一方法是从JAR存档中提取与输出类相同的目录中的类文件。因此,我不需要在执行命令中包含类路径标志。

但这是我不想要的。我想将我的JAR归档文件与我的源代码的输出类文件分开。我知道使用IDE这是我不需要担心的事情。但是我对命令行解决方案更感兴趣;去了解幕后发生的事情。

关于StackOverflow,我已经考虑了所有其他建议,但似乎都不管用。仅供参考,我在所有情况下都使用默认包。未明确指定包装。

请帮忙。提前感谢!

更新:我被要求以可读的格式提供我的目录结构,所以如下所示:

$pwd
C:\My\Path\To\Java\Programs\Top
$ls
Source
Bin
Lib
$cd Bin 
$ls
B.class
$ls ..\Source\
A.java
B.java
$ls ..\Lib
A.jar
$jar tf ..\Lib\A.jar
META-INF
META-INF/MANIFEST.MF
A.java
A.class

我希望这能解决问题。我正在使用Windows Powershell,因此子目录标记为“\”。如果我在Unix终端中键入,它应该是“/”。顺便说一句,我在Ubuntu 14.04上尝试过,但没有成功。我还用jdk1.6到jdk1.8测试了这个问题,同样的错误。

共有2个答案

蒲昊
2023-03-14

而不是下面的:

java-cp…\lib\A.jarB

提供这个

爪哇 B -cp ..自由.jar

谢谢

阿里特拉

易弘亮
2023-03-14

您在尝试运行程序时错过了“类路径”。

人们错误地认为“-cp..\Lib\A.jar”是在运行时包含A.class。但问题是,“-cp”选项是设置类路径而不是include。这样一来,就缺少了类“B”的类路径。

所以要运行你的程序,从“Bin”文件夹,正确的命令(对于任何Windows系统)是:“java -cp。;..\Lib\A.jar B "。的“.”参考当前目录会有所不同。

对于Linux,来自“Bin”文件夹的命令变成了:“java -cp。:../Lib/A.jar B "。

主要区别在于分隔符,“;”用于视窗,“:”表示 Linux。

 类似资料:
  • 我用的是软呢帽19。HelloWorld的内容。爪哇: 我可以使用 javac HelloWorld。JAVA 但我无法使用 java HelloWorld 它给出了以下错误 错误:无法找到或加载主类HelloWorld 但我可以用 sudo java HelloWorld 我错过了什么???

  • 问题内容: 我想连接我的java程序以连接数据库并检索数据。它的编译完美,但运行时即时得到这个 我已经安装了Java SQL驱动程序,并将jar路径作为CLASSPATH添加到环境变量中 问题答案: 您应该从这里下载驱动程序 和JAR文件需要添加到项目类路径。 首先,右键单击Eclipse Project,然后单击Project-> Build Path-> Configure Build Pat

  • 当我正常运行此代码时,它会吐出: 异常线程"main"java.lang.ClassNotFoundExcture: bookReader 在java.net.URLClassLoader.find类(URLClassLoader.java:381) 在java.lang.ClassLoader.load类(ClassLoader.java:424)<在sun.misc.启动$AppClassLo

  • 我使用的是Eclipse最新版本,每次我以“Java应用程序”的形式运行这个简单代码时,都会遇到错误“找不到或加载主类”。我是新来的,所以对Java知之甚少。我期待着一些帮助,请详细说明。运行配置窗口截图Buildpath配置截图。窗

  • 问题内容: 我在笔记本电脑上有一个日食项目,我将其推送到Git https://github.com/chrisbramm/LastFM-History-Graph.git 它可以完全在我的笔记本电脑上运行,并且可以正常运行/构建,但是在我的台式机上,Eclipse没有显示错误 错误:找不到或加载主类lastfmhistoryguis.InputPanel 我尝试从以下位置构建项目: 但是什么也没

  • 此依赖项导致Eclipse Juno在pom.xml上给出一个红色十字标记,并在