2016-07-05 107 views
0

我在下面有App.java和pom.xml文件。 如果我在Eclipse執行App.java運行的應用程序,它的工作原理在Maven項目的命令行上運行jar文件

然而,在日食的全新安裝,然後打開一個終端,並執行以下命令來運行它MVN後,

java命令MYAPP -1.0.0-SNAPSHOT.jar org.myapp.test.App

我有以下錯誤: 我GOOGLE了它和看起來像SLF4J-api.jar文件和JCL-過SLF4J需要 被列入在命令行中。這些jar文件在 C:\ Users \ user.m2 \ repository \ org \ slf4j \ slf4j-api \ 1.7.7 \ slf4j-api-1.7.7.jar等等。

所以,我想下面的命令行

java命令C:/Users/user/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7。 7.jar; C:/Users/user/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.7/jcl-over-slf4j-1.7.7.jar; MyApp的-1.0.0快照。 jar org.myapp.test.App

這也行不通。

2)基於我的搜索結果,我想我可以在pom.xml文件中包含這樣的jar文件,這樣我就可以在沒有這些錯誤的情況下運行,並且無需在命令行中添加jar文件,建立路徑或類似的東西,但找不到明確的例子。

任何人都可以請爲此顯示一些pom.xml文件?

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
     at com.walmart.ticketservice.App.<clinit>(App.java:32) 
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 
     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) 
     ... 1 more 
Exception in thread "main" 




package org.myapp.test; 

    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 

    public class App { 
     private static final Logger logger = LoggerFactory.getLogger(App.class); 

     public static void main(String[] args) { 
      logger.debug("debug"); 
      logger.info("info"); 
     } 
    } 

的pom.xml

<dependencies> 
<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.4</version> 
    <scope>test</scope> 
    </dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.7</version> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>1.7.7</version> 
</dependency> 

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>1.1.2</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>false</downloadJavadocs> 
       <wtpversion>2.0</wtpversion> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
     </plugin> 
    </plugins> 
</build> 

回答

0

的Eclipse知道你用什麼庫和組裝類路徑爲您服務。由於您需要考慮依賴關係,因此手動執行此操作可能非常乏味。

正如你所說的,你可以讓Maven在jar中爲你捆綁所有東西。這裏解釋:

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies

一個相關的問題上計算器:

How can I create an executable JAR with dependencies using Maven?

+0

感謝它的作品! – user2761895

相關問題