相关疑难解决方法(0)

运行Maven项目的主要类

我创建了一个使用Maven构建的简单控制台Java应用程序.是否有一种方法可以使用maven命令从命令行运行主类(不需要任何参数),如:

mvn run-app com.example.MainClass
Run Code Online (Sandbox Code Playgroud)

java maven-2 maven maven-exec-plugin

254
推荐指数
2
解决办法
28万
查看次数

Maven和Java:目标org.codehaus.mojo的参数'mainClass':exec-maven-plugin:1.2.1:java缺失或无效

我的Java EE proj构建正常,但在尝试执行时会出现以下错误:

gert@gert-VirtualBox:~/workspace/CDBOOKSTORE$ mvn exec:java 
[INFO] Scanning for projects... 
[INFO]                                       
[INFO] ------------------------------------------------------------------------
[INFO] Building CDBOOKSTORE 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO]  
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ CDBOOKSTORE >>>    
[INFO]  
[INFO] --- maven-dependency-plugin:2.8:copy (default) @ CDBOOKSTORE ---
[INFO]  
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ CDBOOKSTORE <<<    
[INFO] 
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ CDBOOKSTORE ---
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.505s [INFO] Finished at: Fri Nov 08 14:01:40 EST 2013 
[INFO] Final Memory: 9M/21M 
[INFO] ------------------------------------------------------------------------    
[ERROR] Failed to …
Run Code Online (Sandbox Code Playgroud)

java maven exec-maven-plugin

25
推荐指数
5
解决办法
3万
查看次数

创建一个下载自己的依赖项的Java应用程序

我对如何分发具有大量依赖关系的Java应用程序感兴趣(在Maven的pom.xml中指定).

显然,可以将所有内容打包在一个大的.jar文件中.然而,这看起来很浪费,因为更新应用程序也需要发送所有依赖项的新副本.

所以我正在寻找一种分发应用程序的方法,该方法执行以下操作:

  • 仅包含主.jar文件中的核心应用程序
  • 运行.jar文件时根据需要下载依赖项
  • 在本地保留依赖项的副本,以便在分发应用程序更新时,不需要再次下载依赖项

实现这一目标的最佳方法是什么?

java deployment dependencies distribution maven

12
推荐指数
1
解决办法
335
查看次数

如何在 Maven 项目中处理 CLASSPATH?

我正在尝试使用 Log4J ver 2-beta 9 的简单 Maven 应用程序。在我的 pom.xml 文件中,我有这两个依赖项(如Log4J Maven 网页中所述):

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0-beta9</version>
</dependency>
<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0-beta9</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Eclipse 看到 Log4J 库:

在此处输入图片说明

但是当我打包应用程序并运行它时,会抛出这个异常:

java -cp target/notification-1.0.0.jar com.example.Sandbox

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
    at com.example.Sandbox.<clinit>(Sandbox.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 1 more
Run Code Online (Sandbox Code Playgroud)

我搜索了这个异常,它似乎与 CLASSPATH 变量有关。

应该如何为 Maven 项目设置 CLASSPATH?

java classpath maven

8
推荐指数
1
解决办法
2万
查看次数