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

标签 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)

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

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

谢谢...

最佳答案

您似乎正在将多个 JAR 文件传递​​给 java application launcher .它不是这样工作的。

您需要传入一个单独的 jar 文件(在本例中为 MyProject.jar),它用作入口点。所有相关的 JAR 都应该在 manifest MANIFEST.MF 的 ClassPath 条目中指定。 , 主 jar 。 list 还应指定 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 的位置。

关于java - 在java中从批处理文件运行jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258642/

相关文章:

java - java中按字符比较两个字符串

java - 检查数组的降序

java - 引用一个在编译时无法解析的变量。 (java)

java - Android中从web异步加载图片到gridview

java - 如何使用 Package 类的 getImplementationVersion() 方法从 JAR 的 list 中获取包版本

java - 如何运行jar文件取决于jar文件

java - Java中的文件删除

java - 在 netbeans 中构建后,Jar 文件无法正常运行

java - 使用 gradle 导出 FireBase(实时数据库)

java - JAR 到 EXE 转换器?