【问题标题】:How can i create and run Jar file from spring batch如何从 Spring Batch 创建和运行 Jar 文件
【发布时间】:2020-09-20 04:53:07
【问题描述】:

我有一个 spring batch 应用程序,其中包含 两个作业eclipse 中的应用程序可以正常工作,但是当我创建 jar 并运行它时,不工作我需要使用 CommandLineJobRunner 执行它。

我尝试使用严格的方式创建一个罐子:


我使用 maven 命令 mvn clean installmvn clean package,在这种情况下,如果我使用 ->

运行 jar

java -jar org.springframework.batch.core.launch.support.CommandLineJobRunner jar 总是执行所有作业。

在其他情况下,如果我尝试使用 java -cp 我得到:

错误:无法找到或加载主类 org.springframework.batch.core.launch.support.CommandLineJobRunner 引起:java.lang.ClassNotFoundException: org.springframework.batch.core.launch.support.CommandLineJobRunner


使用ecilpse导出jar文件

在eclipse导出->jar->runneableJar,本例中:

如果我使用 java -cp 我会得到 FileNotFoundException application.properties,但这个文件在资源中。

如果我使用 java -jar 我得到 没有主要清单属性。

在eclipse导出->jar->jar文件,本例中:

如果我使用 java -cp 我得到 -> 错误:无法找到或加载主类 org.springframework.batch.core.launch.support.CommandLineJobRunner 引起:java.lang.ClassNotFoundException: org.springframework.batch.core.launch.support.CommandLineJobRunner

如果我使用 java -jar 我得到 没有主要清单属性。

我不知道该尝试什么。 谢谢,对不起我的英语,不是我的母语 languaje

【问题讨论】:

  • 我使用 java -jar 或 java -cp org.springframework.batch.core.launch.support.CommandLineJobRunner 执行 jar
  • 似乎 'org.springframework.batch.core.launch.support.CommandLineJobRunner' 没有被打包到 jar 中。请在此处分享 POM 文件。

标签: spring spring-boot maven jar spring-batch


【解决方案1】:

您至少有三个选择:

  • 在您的类路径中添加 Spring Batch 和所有其他依赖项
  • 使用 maven shade plugin 在同一个 jar 中隐藏所有依赖项
  • 使用 Spring Boot,它会自动为您执行此操作,请参见 getting started guide 中的示例。

【讨论】:

  • 您好,我看过该指南,在我的情况下不起作用,使用这些 jar 总是尝试执行所有作业。使用 maven shade 插件的 pom.xml 配置如何,目前我在 BOOT-INF\lib 文件夹中有所有 jar,但 jar 不起作用。
  • 我看到了我的manfest,Main-Class:org.springframework.boot.loader.JarLauncher Start-Class:myClass,我将Start-class更改为Main-Class:org.springframework.boot.loader。 JarLauncher Start-Class: org.springframework.batch.core.launch.support.CommandLineJobRunner 然后我得到 java.lang.IllegalStateException: 必须提供 JobLauncher。请在配置中添加一项。有什么想法吗?
【解决方案2】:

它现在可以工作了,问题是插件,正如 Mahmoud 所说,必须使用 maven 插件,但另一方面,我有提供范围的 db2 依赖项,在构建和测试项目期间使用提供的 Maven 依赖项范围。它们也需要运行,但不应导出,因为依赖项将由运行时提供,例如 servlet 容器或应用程序服务器。

【讨论】:

猜你喜欢
  • 2011-03-16
  • 2020-09-24
  • 2014-04-09
  • 2012-05-11
  • 2016-08-17
  • 1970-01-01
  • 2023-03-06
  • 2018-02-18
  • 2015-08-15
相关资源
最近更新 更多