[英]Jar generated by NetBeans not running although it runs from the IDE
Here is my pom.xml. 这是我的pom.xml。
<?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.mycompany</groupId>
<artifactId>TimeTrackerWithMaven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.mycompany.timetrackerwithmaven.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.4.201502262128</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.0.31-beta</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0-rc2</version>
</dependency>
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>platform</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
<name>TimeTrackerWithMavenDevelopment</name>
Here is my MANIFEST.MF in the generated jar. 这是生成的jar中的MANIFEST.MF。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Blackstorm
Class-Path: mockito-core-2.0.31-beta.jar byte-buddy-0.6.14.jar objenes
is-2.1.jar commons-io-1.3.2.jar junit-4.12.jar hamcrest-core-1.3.jar
spring-core-4.2.4.RELEASE.jar commons-logging-1.2.jar spring-test-4.2
.4.RELEASE.jar spring-beans-4.2.4.RELEASE.jar spring-context-4.2.4.RE
LEASE.jar spring-aop-4.2.4.RELEASE.jar aopalliance-1.0.jar spring-exp
ression-4.2.4.RELEASE.jar gson-2.4.jar guava-19.0-rc2.jar google-coll
ections-1.0.jar jna-4.1.0.jar platform-3.5.2.jar
Created-By: Apache Maven 3.0.5
Build-Jdk: 1.8.0_101
Main-Class: com.mycompany.timetrackerwithmaven.Main
When I run my code with "java -jar TimeTrackerWithMaven-1.0-SNAPSHOT.jar" I get the following error. 当我使用“ java -jar TimeTrackerWithMaven-1.0-SNAPSHOT.jar”运行代码时,出现以下错误。
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 7 more Error: A JNI error has occurred, please check your installation and try again Exception in thread "main"
java.lang.NoClassDefFoundError:org / springframework / context / ApplicationContext at java.lang.Class.getDeclaredMethods0(本地方法)at java.lang.Class.privateGetDeclaredMethods(未知源)at java.lang.Class.privateGetMethodRecursive(未知源)原因:java.lang.Class.getMethod0(未知源),位于java.lang.Class.getMethod(未知源),位于sun.launcher.LauncherHelper.validateMainClass(未知源),位于sun.launcher.LauncherHelper.checkAndLoadMain(未知源) java.lang.ClassNotFoundException:org.springframework.context.ApplicationContext在java.net.URLClassLoader.findClass(未知源)在java.lang.ClassLoader.loadClass(未知源)在sun.misc.Launcher $ AppClassLoader.loadClass(未知源) ),位于java.lang.ClassLoader.loadClass(未知源)...另外7个错误:发生了JNI错误,请检查您的安装,然后重试。
Your output jar don't have necessary libraries included and dependencies can't be found on classpath. 您的输出jar没有包含必需的库,并且在classpath上找不到依赖项。 To solve that, either include them on classpath (in your case, put them in the same folder as the output jar, there may be some plugins to help automate that, though this doesn't look like a giid idea, your folder will be polluted with tons of dependency jars, keeping it out of organize) or use maven-shade-plugin to merge those dependencies into output jar.
为了解决这个问题,可以将它们包括在classpath中(在您的情况下,将它们放在输出jar所在的文件夹中,可能会有一些插件可以帮助实现自动化,尽管这看起来并不明智,但您的文件夹将被大量的依赖罐污染,使其保持混乱状态)或使用maven-shade-plugin将这些依赖合并到输出罐中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.