【问题标题】:Could not find or load main class test (again)无法找到或加载主类测试(再次)
【发布时间】:2015-03-01 06:35:32
【问题描述】:

类似的问题已经被问过好几次了,但没有一个对我有帮助。请提供解决方案。

这在 Eclipse 中运行良好,但我无法在 cmd(Windows) 中运行它

我创建了一个 jar 文件,其中包含一些具有一些静态方法的类(jar 内没有主类),我想将它导入到一个 java 文件(具有 main())并运行它。

编译成功,但执行时出错

无法找到或加载主类测试

jar 文件和 java 文件都在同一个目录中

编译我在做

javac -cp file.jar test.java

执行

java -cp file.jar test

我在搜索不同的答案时尝试了以下方法,但没有奏效:

java -cp file.jar:. test
java -cp .:file.jar test

请指导我做错了什么。

这里是 test.java

import pkg.classname;
class test {
    public static void main(String[] args) {
        ...
    }       
}

这是jar tf的输出:

$ jar tf file.jar

META-INF/MANIFEST.MF
pkg/classname.class
pkg/others.class

PS:我故意尝试提供无效的 jar 文件名,但错误是一样的。

【问题讨论】:

  • 请不要过早关闭问题,我保证在解决我的问题后立即删除。
  • test.java 中有package 声明吗?
  • 将“jar tvf file.jar”的输出添加到问题中。以及 test.class 的位置。你能展示一下 test.java 吗?
  • 是的,该类在包中。
  • 恕我直言,删除问题。

标签: java jar


【解决方案1】:

如果你有一个 Test.java:

package my.pack;
public class Test {...}

这个文件应该在你执行这些东西的文件夹下的 my\pack 子文件夹中:

java -cp .;file.jar my.pack.Test

如果Test(或test)类中没有package语句,

java -cp .;file.jar Test
java -cp .;file.jar test

应该可以。

【讨论】:

  • 好吧,你称之为测试 - 请调整。它真的在子文件夹中吗?它同意 Jayan 的评论......
  • 您的代码在类测试中没有显示package 语句。
  • Error: Could not find or load main class pkg.classname.test
  • 我试过这个java -cp .;file.jar pkg.classname.test
  • 所以请您在您的问题中为您的班级测试提供包装声明吗?或者删除这个。
【解决方案2】:

如果您的主要 Java 类 (test) 被声明在包 pkg 中,并且它不是在“.jar”文件中,而只是一个“test.class”文件,那么:

  1. 立即创建子目录pkg

  2. 将主test.class文件放在那个子目录中

  3. 假设你的支持库是support.jar,运行:

    java -cp .;support.jar pkg.test

【讨论】:

  • 很公平,我只是不知道如何在评论中清楚地展示一个漫长的过程。我应该删除吗?
  • 是的,这就是 Stack Overflow 的痛点之一。我认为这个问题几乎是在浪费每个人的时间,因为 Raghuv 没有提供准确的信息。我要结束这个问题。让我们摆脱它的痛苦(或我们的痛苦)。
猜你喜欢
  • 2016-04-04
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2015-02-06
相关资源
最近更新 更多