在java中从批处理文件运行jar

use*_*194 1 java jar

我有问题从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)
Run Code Online (Sandbox Code Playgroud)

在内部运行文件夹中,我有一个批处理文件,其内容如下:

java -jar ../dist/MyProject.jar;../lib/*.jar com.my.test.MainTest
Run Code Online (Sandbox Code Playgroud)

有人可以指导我.我只想去运行文件夹并双击.bat文件并运行应用程序.

我正进入(状态

Exception in thread "main" java.lang.NoClassDefFoundError: MyProject/jar
Run Code Online (Sandbox Code Playgroud)

更新

新的错误是:

The java class is not found:  com.microsoft.sqlserver.jdbc.SQLServerException
Run Code Online (Sandbox Code Playgroud)

谢谢...

Vin*_*lds 6

您似乎将多个JAR文件传递给java应用程序启动器.这不是它的工作原理.

您需要传入一个单独的jar文件(在本例中为MyProject.jar),它作为入口点.应在主jar 的清单MANIFEST.MF的 ClassPath条目中指定所有相关的JAR .清单还应该指定Main类 - 具有main()方法的类.

如果要避免上述操作,并在命令行上指定完整的类路径,请使用-cp-classpath标记.但是,您需要在类路径中指定通配符,方式与问题中列出的方式不同.以下可能有效; 在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
Run Code Online (Sandbox Code Playgroud)

更新

根据现在报告的新错误消息,似乎Microsoft SQL Server JDBC驱动程序不存在于类路径中.这将需要下载并放置必要的JAR(在lib目录中).如果驱动程序存在于其他位置,则应使用JAR的位置更新用于启动应用程序的上述命令.