无法使用Jar文件查找或加载主类
我正在尝试使用加载jar
@echo off java -jar Test.jar pause
随着的表现
Manifest-Version: 1.0 Main-Class: classes.TestClass
在Jar目录中,当我提取它时,我可以清楚地看到classes \ TestClass文件。
编辑: classes.TestClass
确实有一个public static void main(String[] args)
。
classes.TestClass
Package Deceleration是package classes;
但我仍然收到错误消息
Could not find or load main class classes.TestClass
我经历过这个问题所能找到的一切,但似乎没有任何帮助。
我已经尝试编辑类路径,重做清单,安装新的JRE。
我还应该做什么?
我得到它像这样工作:
TestClass.Java
package classes; public class TestClass { public static void main(String[] args) { System.out.println("Test"); } }
在命令行上使用javac
来生成TestClass.class
。 将TestClass.class
放在文件夹classes/
。
MANIFEST.MF
Manifest-Version: 1.0 Main-Class: classes.TestClass
然后跑
jar cfM MANIFEST.MF test.jar classes/
然后运行它
java -jar test.jar
java -cp“full-path-of-your-jar”Main
在某些包中运行任何其他具有“public static void main”的类,
java -cp“full-path-of-your-jar”package1.package2.packages-hierarchy.ClassHavingMain
1.创建一个文本文件calles Manifest.txt并提供值为
Main-Class:classes.TestClass
把jar子盖成两片
jar cfm test.jar Manifest.txt classes / * .class
把jar子当作
java -jar test.jar
我最后遇到了同样的问题,因为我复制并粘贴了单词代码,这是一个稍微不同的’ – ‘字符使用类型,这就是我所能想到的,当我手动键入它时它工作了
我有一个类似的问题,我可以通过为jar文件所在的所有父文件夹(在Linux系统上)授予执行权限来解决。
例:
/folder1/folder2/folder3/executable.jar
所有3个文件夹(folder1,folder2和folder3)以及executable.jar都需要当前用户的execute-privilege,否则返回错误“找不到或加载主类…”。
没有完整的信息,这很难调试。
此时最令人讨厌的两个问题是jar中的文件没有存储在JAR中的目录中,或者它不是正确的文件。
你需要存储TestClass.class – 一些人在这个商店新建了源文件TestClass.java。
您需要创建jar文件,以便TestClass.class出现类路径。 确保它不是“/ classes”。 使用zip查看文件并确保它有一个“类”的路径。
至少我这样做的方式如下:
如果您有一个嵌套的src树(比如com.test.myclass.MyClass),并且您要从根目录进行编译,则需要执行以下操作:
1)当你创建jar(通常把它放在一个脚本中):jar -cvfm my.jar com / test / myclass / manifest.txt com / test / myclass / MyClass.class
2)清单应该如下:
Mainfest-version:1.0 Main-Class:com.test.myclass.MyClass Class-Path :. my.jar
3)现在你可以从这样的任何地方运行jar:
java -jar my.jar
希望这有助于某人
我按照以下说明在Eclipse中创建可执行文件.jar。 然后运行命令“java -jar .jar”来启动程序。
它负责创建mainfest并为您包含主类和库文件部分。
http://java67.blogspot.com/2014/04/how-to-make-executable-jar-file-in-Java-Eclipse.html
当MANIFEST.MF中的错误条目导致加载失败时,我遇到了一个奇怪的问题。 这是我试图推出一个非常简单的scala程序的时候:
不正确:
Main-Class: jarek.ResourceCache Class-Path: D:/lang/scala/lib/scala-library.jar
正确:
Main-Class: jarek.ResourceCache Class-Path: file:///D:/lang/scala/lib/scala-library.jar
对于不正确的版本,我收到了一个神秘的信息,就像OP一样。 可能在解析清单文件时应该说出格式错误的urlexception 。
清单文件中使用绝对路径是IntelliJ用于为程序提供长类路径的方法。