2016-07-05 110 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

相关问题