从java批处理文件运行jar
我有问题从jar中运行主类。从java批处理文件运行jar
Ant脚本产生了以下文件夹:
MyProject(Somewhere in C:)
|
|
|____configuration(this contains properties/XML file)
|
|____dist(contains MyProject.jar)
|
|____lib(contains all other jars)
|
|____run(contains batch file to run MyProject.jar)
内运行文件夹我有一个批处理文件,其内容是这样的:
java -jar ../dist/MyProject.jar;../lib/*.jar com.my.test.MainTest
有人可以指导我。 我只想去运行文件夹并双击.bat文件并运行应用程序。
我越来越
Exception in thread "main" java.lang.NoClassDefFoundError: MyProject/jar
更新
新的错误是:
The java class is not found: com.microsoft.sqlserver.jdbc.SQLServerException
谢谢...
使用-cp(或-classpath)代替-jar:
java -cp ../dist/MyProject.jar;../lib/*.jar com.my.test.MainTest
-jar选项用于运行.jar文件,该文件要求.jar文件必须包含指示要执行哪个类的清单。但是在这里你不需要,因为你已经提供了类来运行(com.my.test.MainTest)。
更新:
由于@Rob提到,在类路径中使用通配符的方式就是 '*',而不是 '的* .jar',让你真正想要的:
java -cp ../dist/MyProject.jar;../lib/* com.my.test.MainTest
我收到了问题中描述的上述异常。 – user234194 2011-06-06 22:21:58
我觉得罐子没有装在我的箱子里。 – user234194 2011-06-06 23:13:06
- 使用
-cp
指定类路径 - 为通配符
.jar
扩展
你得到的命令是:
java -cp ..\dist\MyProject.jar;..\lib\* com.my.test.MainTest
Related question与启发性的答案。
我尝试过,但它仍然给我错误。 – user234194 2011-06-06 23:13:50
看来你正在将多个JAR文件传递给java application launcher。这不是它的工作原理。
你需要传入一个单独的jar文件(在这种情况下是MyProject.jar),它用作入口点。所有相关的JAR应在主jar的manifest MANIFEST.MF的ClassPath条目中指定。清单还应指定Main类 - 具有main()方法的类。
如果要避免上述情况,并在命令行上指定完整的类路径,请使用-cp
或-classpath
标志。但是,您需要在类路径中使用specify wildcards,方式与问题中列出的方式不同。以下可能有效;在Windows上,如果需要用引号括类路径条目:
REM notice the quotes in the cp argument. Those are to be omitted in *nix
java -cp "../dist/MyProject.jar;../lib/*" com.my.test.MainTest
更新
立足现在报道的新的错误消息,看来该Microsoft SQL Server JDBC Driver是不存在的类路径。这需要下载并放置必要的JAR(在lib目录中)。如果驱动程序存在于其他地方,那么用于启动应用程序的上述命令应该更新为JAR的位置。
它抱怨在lib文件夹中的jar ....它说没有找到类。 – user234194 2011-06-06 23:12:18
什么是新错误?你可以在问题中发布新的堆栈跟踪吗?这将有所帮助。 – 2011-06-06 23:16:55
我已经更新了我的新错误的问题,谢谢..... – user234194 2011-06-06 23:37:15
这是什么问题? – 2011-06-06 22:15:35