我正在尝试使用加载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 classes;
但我仍然收到错误消息
Could not find or load main class classes.TestClass
我经历过这个问题所能找到的一切,但似乎没有任何帮助 .
我已经尝试编辑类路径,重做清单,安装新的JRE .
我还应该做什么?
11 回答
在某些包中运行任何其他具有“public static void main”的类,
1.创建一个文本文件calles Manifest.txt并提供值为
2.创建 jar
把 jar 弄得像
我最后遇到了同样的问题,因为我复制并粘贴了单词的代码,这是一个稍微不同的' - '字符使用类型,这就是我能想到的,当我手动键入它时它工作了
没有完整的信息,这很难调试 .
此时最令人讨厌的两个问题是jar中的文件没有存储在JAR中的目录中,或者它不是正确的文件 .
你需要存储TestClass.class - 一些人在这个商店新建了源文件TestClass.java .
您需要创建jar文件,以便TestClass.class出现类路径 . 确保它不是“/ classes” . 使用zip查看文件并确保它有一个“类”的路径 .
我得到它像这样工作:
TestClass.Java
在命令行上使用
javac
生成TestClass.class
. 将TestClass.class
放在文件夹classes/
中 .MANIFEST.MF
然后跑
然后运行它
我有一个类似的问题,我可以通过为jar文件所在的所有父文件夹(在Linux系统上)授予执行权限来解决 .
例:
/folder1/folder2/folder3/executable.jar
所有3个文件夹(folder1,folder2和folder3)以及executable.jar都需要当前用户的execute-privilege,否则返回错误“找不到或加载主类...” .
至少我这样做的方式如下:
如果您有一个嵌套的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
当 an incorrect entry in MANIFEST.MF 导致加载失败时,我遇到了一个奇怪的问题 . 这是我试图推出一个非常简单的scala程序的时候:
不正确:
正确:
对于不正确的版本,我收到了一个神秘的消息,就像OP一样 . 可能在解析清单文件时应该说出格式错误的url异常 .
在清单文件中使用绝对路径是IntelliJ用于为程序提供长类路径的方法 .
我有这个错误,因为我在
MANIFEST.MF
中写了一个错误的类路径我知道这是一个老问题,但我最近遇到了这个问题,没有一个答案对我有帮助 . 然而,Corral对Ryan Atkinson的回答的评论确实让我想到了这个问题 .
我把所有已编译的类文件放在
target/classes
中,在我的情况下不是包 . 我试图用我的项目的根目录中的jar cvfe App.jar target/classes App
打包它,因为我的App类在默认的未命名包中 .这不起作用,因为新创建的
App.jar
将在目录target/classes
中具有类App.class
. 如果你试图用java -jar App.jar
运行这个jar,它会抱怨它找不到App
类 . 这是因为App.jar
中的包与实际包不匹配在项目中 .这可以通过使用
jar cvfe App.jar . App
直接从target/classes
目录创建jar来解决 . 在我看来,这很麻烦 .简单的解决方案是使用
-C
选项列出要添加的文件夹,而不是使用列出文件夹的默认方式 . 所以,在我的情况下,正确的命令是java cvfe App.jar App -C target/classes .
. 这将直接将target/classes
目录中的所有文件添加到App.jar
的根目录,从而解决问题 .