Maven 全新安装不包括可执行 jar 文件的 sqlite 依赖项

使用后


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>


在 intelliJ 中运行程序没有问题。我将它从项目结构中包含在内。


我用 **** 替换了名称和目录。这是一个学校项目,我不希望我的教授指责我为其他团体提供解决方案,以防他们发现这个 stackoverflow 条目。


婷婷同学_
浏览 148回答 2
2回答

宝慕林4294392

可能只有在运行 jar 时才会得到这个,因为依赖项在其中不可用/打包。尝试生成一个“fat jar”(也称为uber-jar),它会将所有依赖项打包到 jar 中:<build>&nbsp; &nbsp; <plugins>&nbsp; &nbsp; &nbsp; &nbsp; <plugin>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <groupId>org.apache.maven.plugins</groupId>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <artifactId>maven-shade-plugin</artifactId>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <executions>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <execution>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <phase>package</phase>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <goals>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <goal>shade</goal>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </goals>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </execution>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </executions>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <configuration>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <finalName>YOUR_JAR_FINAL_NAME</finalName>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </configuration>&nbsp; &nbsp; &nbsp; &nbsp; </plugin>&nbsp; &nbsp; </plugins></build>相关的文档maven-shade-plugin可以在这里找到由于您使用的是可运行的 jar 文件,因此您可以遵循与Executable Jars相关的文档的这一部分

慕妹3146593

一些背景。Maven install 从不安装依赖项;它只安装通过 POM 构建的项目。如果您不使用“胖 jar”(我不推荐)或使用新的 spring boot 可执行 jar 实现,那么依赖项的安装也是您必须执行的任务。对于这样的问题,经典的“胖罐子”是一个非常糟糕(但通常是唯一选择)的解决方案。考虑使用 Spring-Boot;他们开发了一个新的、健全的可执行 jar 文件版本,其中包括可执行 jar 中的依赖项,并在启动时将它们添加到类路径中。此功能类似于将“war”文件添加到 JEE 容器时的功能。警告:我不为 Pivotal 工作,我只是喜欢他们的大部分工作(Spring 框架)。编辑:这是&nbsp;Spring Boot Reference 中 Executable Jar 部分的链接。它包含一些细节。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java