【问题标题】:.jar files created with maven do not open使用 maven 创建的 .jar 文件无法打开
【发布时间】:2014-09-25 13:51:32
【问题描述】:

我刚刚遇到了我无法摆脱的问题,就像在标题中一样,当我使用 netbeans 从 maven 项目构建 .jar 时,它只是没有在 IDE 之外打开。 在 IDE 中使用运行按钮可以完美地运行应用程序并且没有问题,但是构建的 .jar 只是无法打开。其他项目中的其他 .jar 正常工作,这是我第一次使用 maven 构建东西,所以我认为问题就在那里。

这是我的 pom 文件,希望问题出在此处:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bbzoftware</groupId>
    <artifactId>HDiSED</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <springframework.version>4.0.6.RELEASE</springframework.version>
        <hibernate.version>4.3.5.Final</hibernate.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.2</version>
        </dependency> 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-shade-plugin</artifactId>
              <version>2.3</version>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>shade</goal>
                  </goals>
                  <configuration>
                    <transformers>
                      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                          <Main-Class>com.bbzoftware.hdised.controller.Main</Main-Class>
                          <Build-Number>123</Build-Number>
                        </manifestEntries>
                      </transformer>
                    </transformers>
                  </configuration>
                </execution>
              </executions>
            </plugin>
        </plugins>
    </build>
</project>

【问题讨论】:

  • 在这里打开是什么意思?执行?还是使用 zip 实用程序打开?
  • 通过双击或控制台执行。
  • 你可能需要使用像 maven-depedency-plugin 这样的插件将 maven 依赖复制到 lib 目录,或者打包到 jar 中。您还需要为 manfiest 中的每个依赖项设置一个 ClassPath 条目。您可以通过使用 java -jar MyJarsName.jar 从 shell(cmd 或终端)启动 jar 来检查依赖项是否存在问题。如果您提供该堆栈跟踪,则更容易说出您的问题所在。只需在 cmd 或 | 中使用 >> 重定向输出在终端到一些文本文件。
  • 更可能的是,maven 没有在 jar 的META-INF 目录中放置MANIFEST.MF。可悲的是,但默认插件会生成一个 library jar,而不是 executable ——而且我在 maven 方面还不够好,无法为您提供解决方案:-(跨度>
  • 你需要配置你的pom来生成一个可执行的jar。检查this 问题,它会尝试完成相同的操作。

标签: java xml maven jar


【解决方案1】:

找到您的 jar 文件并尝试使用例如 7zip 打开它。 Jar 文件只是一个存档文件。

【讨论】:

  • 我需要执行它,而不是检查里面的内容。在 7zip 中打开的项目看起来很正常,只是没有执行。
猜你喜欢
  • 2018-11-06
  • 1970-01-01
  • 2016-05-23
  • 2015-02-06
  • 2016-08-28
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
相关资源
最近更新 更多