maven程序集jar执行无法找到或加载主类,原因是:java.lang.classnotfoundexception

tct7dpnv  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(473)

几天来,我一直在尝试为我的muli-module-maven项目创建一个可执行jar文件,遗憾的是,我没有成功。
我知道已经有很多类似的问题,但是,即使按照答案,我也无法运行我制作的jar。
我使用的是maven程序集插件,因此我的jar包含了所有必需的依赖项,下面是pom:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <artifactId>tam-authentication</artifactId>
  7. <name>tam-authentication</name>
  8. <description>authentication tam project</description>
  9. <parent>
  10. <groupId>com.netcomgroup.eu</groupId>
  11. <artifactId>TAM</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. </parent>
  14. <properties>
  15. <java.version>11</java.version>
  16. </properties>
  17. <build>
  18. <plugins>
  19. <plugin>
  20. <groupId>org.apache.maven.plugins</groupId>
  21. <artifactId>maven-jar-plugin</artifactId>
  22. </plugin>
  23. <plugin>
  24. <groupId>org.apache.maven.plugins</groupId>
  25. <artifactId>maven-assembly-plugin</artifactId>
  26. </plugin>
  27. </plugins>
  28. <pluginManagement>
  29. <plugins>
  30. <plugin>
  31. <groupId>org.apache.maven.plugins</groupId>
  32. <artifactId>maven-assembly-plugin</artifactId>
  33. <configuration>
  34. <descriptorRefs>
  35. <descriptorRef>jar-with-dependencies</descriptorRef>
  36. </descriptorRefs>
  37. <archive>
  38. <manifest>
  39. <mainClass>"fully qualified class name"</mainClass>
  40. </manifest>
  41. </archive>
  42. </configuration>
  43. <executions>
  44. <execution>
  45. <id>make-assembly</id>
  46. <phase>package</phase>
  47. <goals>
  48. <goal>single</goal>
  49. </goals>
  50. </execution>
  51. </executions>
  52. </plugin>
  53. </plugins>
  54. </pluginManagement>
  55. </build>
  56. <dependencies>
  57. ...
  58. dependencies from other modules
  59. ...
  60. </dependencies>
  61. </project>

此外,我还有另一个可能与jar创建相关的问题,其中包括一个公共库:
使用eclipse作为ide,每当我在multimodule项目上运行as>maven install时,我经常会遇到jar无法正确导入的情况,我需要删除并再次导入jar以正确完成java构建过程。有时我必须连续多次运行maven install才能使jar构建过程成功。
我不知道第二个问题是否相关,但我猜在多模块项目jar构建中有一些我看不到的错误。

vsdwdz23

vsdwdz231#

首先,根据pom.xml,您没有在依赖项中提供完全限定的主类名。第二,如果您提供了主类名,那么在“mvn clean install”之后,它将创建2个jar—一个带有工件名,另一个带有“jar with dependencies”,您必须使用“jar with dependencies”。我也不认为你需要使用pluginmanagement标签作为额外的步骤。我刚刚修改了一点你的pom下面,请尝试这个和检查。

  1. <?xml version="1.0" encoding="UTF-8"?>

4.0.0

  1. <artifactId>tam-authentication</artifactId>
  2. <name>tam-authentication</name>
  3. <description>authentication tam project</description>
  4. <parent>
  5. <groupId>com.netcomgroup.eu</groupId>
  6. <artifactId>TAM</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. </parent>
  9. <properties>
  10. <java.version>11</java.version>
  11. </properties>
  12. <build>
  13. <plugins>
  14. <plugin>
  15. <groupId>org.apache.maven.plugins</groupId>
  16. <artifactId>maven-jar-plugin</artifactId>
  17. </plugin>
  18. <plugin>
  19. <groupId>org.apache.maven.plugins</groupId>
  20. <artifactId>maven-assembly-plugin</artifactId>
  21. <executions>
  22. <execution>
  23. <phase>package</phase>
  24. <goals>
  25. <goal>single</goal>
  26. </goals>
  27. </execution>
  28. </executions>
  29. <configuration>
  30. <archive>
  31. <manifest>
  32. <addClasspath>true</addClasspath>
  33. <mainClass>{Your fully qualified Main class eg - abc.cde.Main}</mainClass>
  34. </manifest>
  35. </archive>
  36. <descriptorRefs>
  37. <descriptorRef>jar-with-dependencies</descriptorRef>
  38. </descriptorRefs>
  39. </configuration>
  40. </plugin>
  41. </plugins>
  42. </build>
  43. <dependencies>
  44. ...
  45. dependencies from other modules
  46. ...
  47. </dependencies>
展开查看全部

相关问题