2016-12-02 4 views
0

다음은 내 pom.xml입니다. NetBeans가 IDE에서 실행 되더라도 실행되지 않는 Jar

<?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> 
다음은 생성 된 항아리에 내 MANIFEST.MF입니다. 나는 "TimeTrackerWithMaven-1.0-SNAPSHOT.jar -jar 자바"내 코드를 실행하면

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 

나는 다음과 같은 오류가 발생합니다.

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"

답변

1

출력 jar에는 필요한 라이브러리가 없으며 클래스 패스에서 종속성을 찾을 수 없습니다. 이 문제를 해결하려면 클래스 패스에 포함 시키거나 (출력 경로와 같은 폴더에 넣으십시오), 자동 스크롤을 지원하는 플러그인이있을 수 있습니다. 그러나 이것이 giid 아이디어처럼 보이지는 않을 것입니다. 의존성 항아리가 많아서 오염되어 조직 밖으로 나가지 않도록한다.) maven-shade-plugin을 사용하여 종속 관계를 출력 항아리에 병합한다.

+0

나는 당신의 뜻을 이해하지 못합니다. – aircraft

+0

@aircraft 이러한 불만은 전혀 도움이되지 않습니다. 내 anwser를 이해하는 데 문제가있는 경우 * 혼란스러운 점을 지적해야합니다. 이 질문은 꽤 오랫동안 사용되지 않았기 때문에 별도의 질문을 열어 질문 할 수 있습니다. – glee8e

관련 문제