java - 我已经使用 maven 构建了一个 jar 文件,但无法在 linux 中使用 "java"命令执行它

标签 java linux maven jar executable-jar

在此先感谢您的帮助!

澄清我的问题:

1) 我有一个 ec2-instance 并编写了一个 java 程序。我将其命名为 HelloWorld.java

2) 我使用 Maven 为 HelloWorld.java 构建了一个名为 hello.jar 的 jar 文件。我使用了一个带有一些随机依赖项的随机 pom 文件,因为我认为 HelloWorld 除了给 jar 文件命名之外不需要 pom 文件。

3) 我一直在使用 spark-submit 脚本来提交应用程序,但是我现在尝试运行的应用程序没有涉及 spark,我也想将它部署在不涉及 spark 的环境中. 所以我想使用“java”命令提交应用程序。我不确定是否应该提交 jar 文件、.java 文件等。我已经看到我必须提供它是一个 .class 参数。我不确定要放什么?

4) 我的下一步是拥有一个具有一组 4 个 jars 依赖项的 java 程序。我很想知道如何将 4 个 jar 文件添加为“java”命令的参数。

编辑 @Ascalonian

我尝试了 John Skeets 的回答,当我尝试 jar 命令时出现了这个异常:

java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:393)
        at java.util.jar.Manifest.read(Manifest.java:182)
        at java.util.jar.Manifest.<init>(Manifest.java:52)
        at sun.tools.jar.Main.run(Main.java:151)
        at sun.tools.jar.Main.main(Main.java:1149)

EDIT 2 当我重新创建解决方案时,John Skeet 的回答最终起作用了。不知道发生了什么变化,但它奏效了。感谢您的帮助!

谢谢!

谢谢!

最佳答案

您需要使您的 jar 成为可执行文件并向其添加 list :

像这样:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>theMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

引用:How can I create an executable JAR with dependencies using Maven?

关于java - 我已经使用 maven 构建了一个 jar 文件,但无法在 linux 中使用 "java"命令执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27971637/

相关文章:

java - 使用 Spring 表达式语言断言从属性文件加载的属性(具有逗号分隔值)是否包含 "value"

Linux (Ubuntu 9.04) 权限 - 如何删除 rws?

linux - AWK 初级条形图/直方图

python - 如何将python3设置为默认值

java - Arquillian + 收缩包裹解析器 : Unable to boostrap Aether repository system

java - Maven 构建失败 - Eclipse 插件 - Tycho

java - 如何在 XSLT 中添加命名空间名称及其值?

java - 如何在java中清除控制台窗口

带有参数化版本的 Maven 发布插件

java - 单击通知中的按钮时启动 Activity