使用后
mvn clean install
接着
java -jar executable.jar
我得到这个错误:
java.lang.ClassNotFoundException: org.sqlite.JDBC
这是我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>****</groupId>
<artifactId>****</artifactId>
<version>0.7-SNAPSHOT</version>
<packaging>jar</packaging>
<name>****</name>
<description>****</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.23.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit/junit5-engine -->
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit5-engine</artifactId>
<version>5.0.0-ALPHA</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.tinyjee.jgraphx/jgraphx -->
<dependency>
<groupId>org.tinyjee.jgraphx</groupId>
<artifactId>jgraphx</artifactId>
<version>3.4.1.3</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>******</sourceDirectory>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>*****</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>******</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
运行里面的IntelliJ程序工作没有任何问题。我把它存在从项目结构。
我换过名字和目录****。这是一所学校的项目,我不希望我的教授指责我的情况下,与其他群体提供的解决方案,他们发现这个计算器条目。
只有当你运行你的罐子,因为依赖不可/包装里面它可能是你得到这个。
尝试生成一个“胖罐子”(也被称为超级-JAR),它会打包罐内所有的依赖关系:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>YOUR_JAR_FINAL_NAME</finalName>
</configuration>
</plugin>
</plugins>
</build>
有关maven-shade-plugin
文档可以found in here
由于您使用的是可运行的jar文件,你可以按照相关的可执行罐this section of the documentation
一些背景。 Maven的安装从未安装依赖;它仅安装项目,该项目是通过POM建设。依赖的安装是,你还必须执行,如果你不使用一个“胖罐子”(我不推荐),或使用新的春天启动可执行的JAR文件执行的任务。
经典的“胖罐子”是这样的问题,一个令人惊讶的可怕的(但往往是唯一的选择)的解决方案。
考虑使用Spring的引导;他们已经开发出一种新的,理智的,版本,包括可执行的JAR文件中的依赖关系,并在启动时将它们添加到类路径可执行的JAR文件中。这个功能类似于当它被添加到JEE容器中的“战争”文件的功能。
警告:我不为举足轻重的工作,我就像他们的许多作品(Spring框架)的。
编辑:这是对Executable Jar Section in the Spring Boot Reference的链接。它包含了一些细节。