2014-10-31 2 views
4

일부 xml 파일의 Count 태그에서 값을 가져 와서 출력 XLSX 파일에 씁니다.jar build 에러를 표시하는 maven을 사용하여 빌드

내 프로그램에는 main()이라는 두 가지 기능이 있습니다. 첫 번째는 xml 파일을 읽는 readXml()이고 두 번째는 출력 엑셀 파일에 쓰는 writeXlsx()입니다.

나는 maven을 사용하여 종속성을 추가하고 jar 파일을 작성했습니다.

생성 된 jar 파일을 실행하면 프로그램의 절반에서 제대로 작동하지만 XLSX를 쓰려고하면 오류가 발생합니다. 오류는 온다 : 이클립스에서 실행할 때

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/xssf/usermodel/XSSFWorkbook 
    at com.mpstddn.App.writeXLSX(App.java:107) 
    at com.mpstddn.App.main(App.java:64) 
Caused by: java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook 

같은 프로그램이 잘 작동하지만 나는 그것의 항아리를 만들어 그것을 실행할 때 오류가 있습니다. 항아리에 아파치 포이블을 포함시킬 수없는 것 같습니다. 나는 maven을 처음 사용하고 있으며 실수를 저지르고 있는지 알지 못합니다. 여기 내 pom.xml입니다 :

<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.mpstddn.java</groupId> 
    <artifactId>myMavenProject</artifactId> 
    <packaging>jar</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>myMaven</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>openxml4j</artifactId> 
      <version>1.0-beta</version> 
     </dependency>  
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-ooxml</artifactId> 
      <version>3.10-FINAL</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-scratchpad</artifactId> 
      <version>3.9</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.10-FINAL</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <sourceDirectory>src</sourceDirectory> 
     <scriptSourceDirectory>src\main\scripts</scriptSourceDirectory> 
     <testSourceDirectory>src\test\java</testSourceDirectory> 
     <outputDirectory>target\classes</outputDirectory> 
     <testOutputDirectory>target\test-classes</testOutputDirectory> 
    <resources> 
     <resource> 
      <directory>src</directory> 
      <excludes> 
       <exclude>**/*.java</exclude> 
      </excludes> 
     </resource> 
     <resource> 
      <directory>lib</directory> 
      <excludes> 
       <exclude>**/*.java</exclude> 
       <exclude>**/*.jar</exclude> 
      </excludes> 
     </resource> 
</resources> 
<pluginManagement> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2-beta-5</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.1</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-release-plugin</artifactId> 
       <version>2.0</version> 
      </plugin> 
     </plugins> 
</pluginManagement> 
    <plugins> 
     <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
         <archive> 
           <manifest> 
             <mainClass>com.mpstddn.App</mainClass> 
           </manifest> 
         </archive> 
       </configuration> 
      </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <executions> 
       <execution> 
        <id>default-testCompile</id> 
        <phase>test-compile</phase> 
        <goals> 
         <goal>testCompile</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-compile</id> 
        <phase>compile</phase> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
        <configuration> 
         <source>1.7</source> 
         <target>1.7</target> 
         <encoding>UTF-8</encoding> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.4.1</version> 
      <executions> 
       <execution> 
        <id>default-clean</id> 
        <phase>clean</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>2.3.1</version> 
      <executions> 
       <execution> 
        <id>default-install</id> 
        <phase>install</phase> 
        <goals> 
         <goal>install</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.5</version> 
      <executions> 
       <execution> 
        <id>default-resources</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>resources</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-testResources</id> 
        <phase>process-test-resources</phase> 
        <goals> 
         <goal>testResources</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
        <execution> 
        <id>default-test</id> 
         <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
           <classpathPrefix>lib/</classpathPrefix> 
          <mainClass>com.mpstddn.App</mainClass> 
         </manifest> 
       </archive> 
      </configuration> 
      <executions> 
       <execution> 
        <id>default-jar</id> 
        <phase>package</phase> 
        <configuration> 
         <packagingExcludes>*.jar</packagingExcludes> 
        </configuration> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>default-deploy</id> 
        <phase>deploy</phase> 
        <goals> 
         <goal>deploy</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>3.0</version> 
      <executions> 
       <execution> 
        <id>default-site</id> 
        <phase>site</phase> 
        <goals> 
         <goal>site</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target\site</outputDirectory> 
         <reportPlugins> 
          <reportPlugin> 
           <groupId>org.apache.maven.plugins</groupId> 
           <artifactId>maven-project-info-reports-plugin</artifactId> 
          </reportPlugin> 
         </reportPlugins> 
        </configuration> 
       </execution> 
       <execution> 
        <id>default-deploy</id> 
        <phase>site-deploy</phase> 
        <goals> 
         <goal>deploy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target\site</outputDirectory> 
         <reportPlugins> 
          <reportPlugin> 
           <groupId>org.apache.maven.plugins</groupId> 
           <artifactId>maven-project-info-reports-plugin</artifactId> 
          </reportPlugin> 
         </reportPlugins> 
        </configuration> 
       </execution> 
      </executions> 
      <configuration> 
       <outputDirectory>target\site</outputDirectory> 
       <reportPlugins> 
        <reportPlugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-project-info-reports-plugin</artifactId> 
        </reportPlugin> 
       </reportPlugins> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 
</project> 

나는 항아리를 만드는 방법 : right click on project in eclipse -> run as -> Maven install 이 프로젝트 폴더 안에 target 디렉토리에있는 jar 파일을 만들 수 있습니다.

나는 입력하여 명령 프롬프트를 사용하여 jar 파일을 실행하고 있습니다 :

그래서 당신의 문제는 당신이 받는다는 - 조립 플러그인 잘못된 구성 때문에 그것의 종속성 기반으로하지 않는
java -jar myMavenProject-0.0.1-SNAPSHOT.jar X:\input_directory input.xml 9 
+0

런타임 클래스 경로를 설정 했습니까 (항아리를 시작할 때)? 우리는 어떻게 편집하고 우리에게 "실행"하는지 알려 주어야합니다. –

+0

org.apache.poi.xssf.usermodel.XSSFWorkbook은 poi-ooxml이어야합니다. 위의 설명에서 언급 한대로 오류를 해결하는 방법은 아마도 조사하는 방법 일 것입니다. – wemu

+0

어떻게 병을 만들고 있습니까? – Chiranjib

답변

1

:

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.5</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     <executions> 
      <execution> 
      <id>package</id> 
      <goals> 
      <goal>single</goal> 
      <goals> 
      <phase>package</phase> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
</build> 
</project> 

문제는 maven-assembly-plugin이 기본적으로 모든 라이프 사이클 단계에 바인딩되지 않는다는 것입니다. 그 후에 시도하십시오 :

mvn clean package 

그리고 결과 jar 파일 (target/WhatEver-x.x-SNAPSHOT-jar-with-dependencies.jar)을 확인하십시오.

+0

@khmarbaise 나는이 의존성을 이미 추가했습니다. 그러나 나는이 의존성이 내가 만드는 병에 포장되어 있지 않다고 생각합니다. . –

+0

그에 따라 업데이트되었습니다. – khmarbaise

관련 문제