我无法使用java-jar
运行.jar文件。我得到一个例外说:
原因:java.lang.ClassNotFoundException:javax.persistence.persistence在java.base/jdk.internal.loader.BuiltInclassLoader.LoadClass(BuiltInclassLoader.java:583)在java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.LoadClass(ClassLoader.java:178)在java.base/java.lang.ClassLoader.LoadClass(ClassLoader.java:521)
尽管该项目直接在IDE中编译和运行良好。
pom.xml文件:
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.4.0-b180830.0438</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<dependency>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-log</artifactId>
<version>0.17.3</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.23.1-GA</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.5.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version> 5.5.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version> 5.5.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version> 1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.4.4.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>12</source>
<target>12</target>
<compilerArgs>
--enable-preview
</compilerArgs>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.2</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<archive>
<manifest>
<mainClass>main.Main</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>jvnet-nexus-staging</id>
<url>http://maven.java.net/content/repositories/staging/</url>
<layout>default</layout>
</repository>
</repositories>
</project>
我使用的是OpenJDK12,不能将oracle用于docker映像。不确定,我错过了什么?
您似乎确实通过使用“MVN clean Package”(或类似)构建了一个JAR。这个JAR文件不包含任何依赖项,而只是您自己的类和资源。要能够调用“java-jar yourjar.jar”,您确实需要创建一个所谓的Uber-Jar,它包含所有依赖项(来自maven pom)。这可以使用Maven Shade插件创建。
我正在尝试使用Ant1.9.6从您的项目中构建一个jar文件。在构建jar文件时,我没有得到任何编译错误,但是在执行它时,我得到了NoClassDefoundError。我已经在生成的清单文件中验证过,我可以看到所需的依赖JAR被添加到类路径中,如class-path:lib/a.jar lib/b.jar lib/c.jar。lib文件夹与src文件夹并行,因此不可能是问题。我正在Mac OS上
我有一个mvn项目,它包含对apache Commons-Lang3的依赖。我设法为这个jar文件生成了一个manifest.mf,它通过我的远程服务器上的java-jar.jar启动。然而,它不包括任何依赖项,我不知道为什么。 您可以看到,它正确地将依赖关系解析为commons-lang并将其放入清单中。但实际文件不见了。 有人知道为什么吗?
问题内容: 我有一个写在Apache Commons顶部的辅助库,当我尝试对其进行javac处理(以便可以将其放入jar中)时,它很抱怨地说,它不知道我在说什么关于何时参考commons.jar中的内容。 如何包含一个jar以便javac可以编译? 问题答案: 对于Windows: 对于Unix或Mac(感谢Dawood提示): 意思是:
我无法通过eclipse导出向导创建正常的jar(不可运行/不可执行),它只创建了jar文件,但没有导出依赖的jar。当从其他类调用导出的jar的方法时出现错误,请帮助
本文向大家介绍Apache Maven 创建具有项目所有依赖项的.jar文件,包括了Apache Maven 创建具有项目所有依赖项的.jar文件的使用技巧和注意事项,需要的朋友参考一下 示例 要创建包含所有依赖项的JAR,可以使用内置描述符格式jar-with-dependencies。以下示例package使用此内置描述符并声明的主类来配置绑定到该阶段的Assembly Plugin的执行co
问题内容: 我想将我的项目打包在一个可执行的JAR中进行分发。 如何使Maven项目将所有依赖JAR打包到我的输出JAR中? 问题答案: 然后用 编译目标应在Assembly:single:single之前添加,否则不包括您自己项目中的代码。 通常,此目标与自动执行的构建阶段相关。这样可以确保在执行mvn install或执行部署/发布时构建JAR 。