JavaFX+;Maven+;Ojdbc6+;IntelliJ(使用Javafx windows应用程序部署oracle jar)

JavaFX+;Maven+;Ojdbc6+;IntelliJ(使用Javafx windows应用程序部署oracle jar),java,oracle,maven,intellij-idea,javafx,Java,Oracle,Maven,Intellij Idea,Javafx,我一直在尝试部署JavaFX应用程序,并将Oracle客户端(ojdbc6)嵌入到同一个jar中 如果我通过IntelliJ运行应用程序,它运行良好并连接到数据库,但一旦我运行“package”任务并尝试通过双击jar或运行以下命令来运行应用程序: "java -jar .\maven-Newton-1.0-SNAPSHOT.jar" 应用程序启动,但不会连接到数据库: ` 在代码中,我尝试了两种方法: Class.forName("oracle.jdbc.driver.OracleDrive

我一直在尝试部署JavaFX应用程序,并将Oracle客户端(ojdbc6)嵌入到同一个jar中

如果我通过IntelliJ运行应用程序,它运行良好并连接到数据库,但一旦我运行“package”任务并尝试通过双击jar或运行以下命令来运行应用程序:

"java -jar .\maven-Newton-1.0-SNAPSHOT.jar"
应用程序启动,但不会连接到数据库:

`

在代码中,我尝试了两种方法:

Class.forName("oracle.jdbc.driver.OracleDriver");

我只是从maven开始,我不太确定我的配置是否正确:

•我尝试将ojdbc6.jar添加到全局库中:

•我已尝试将ojdbc6.jar文件添加到SDK类路径:

•我已经搞乱了模块依赖关系:

但我的问题可能在于POM文件,因为我想嵌入到我的应用程序中的另一个jar也没有部署(org.reflections)

•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>Newton</groupId>
    <artifactId>maven-Newton</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>


    <build>
        <plugins>
            <plugin>
                <!-- Build an executable JAR -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>Controller.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>true</overWriteSnapshots>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.reflections</groupId>
                <artifactId>reflections</artifactId>
                <version>0.9.11</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
            </plugin>
            <plugin>
                <!-- https://mvnrepository.com/artifact/oracle/ojdbc6 -->
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.reflections</groupId>
            <artifactId>reflections</artifactId>
            <version>0.9.11</version>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0</version>
        </dependency>
    </dependencies>

</project>

4.0.0
牛顿
马文牛顿
1.0-快照
1.8
1.8
org.apache.maven.plugins
maven jar插件
2.4
真的
主控制器
org.apache.maven.plugins
maven编译器插件
3.1
org.apache.maven.plugins
maven依赖插件
复制依赖项
包裹
复制依赖项
${project.build.directory}
假的
真的
组织反思
反思
0.9.11
org.apache.maven.plugins
maven资源插件
2.6
com.oracle
ojdbc6
11.2.0
组织反思
反思
0.9.11
com.oracle
ojdbc6
11.2.0
不太确定从这里去哪里,任何帮助都将不胜感激


谢谢

问题在于,您使用“package”目标生成的单个jar文件本身并不包含ojdbc.jar。 您必须使用类路径运行jar文件,例如

java -cp ojdbc.jar;othernecessary.jar maven-newton-project-1.0.jar
顺便说一句,在maven中,依赖项(代码运行所需的)和插件(maven构建所需的)是有区别的。你对maven编译器插件和maven资源插件的依赖让我觉得你混淆了这两个概念

我将把这两个部分移到名为
的部分,与maven jar插件一起


如果您想要一个易于理解的开始,请尝试以下内容:

您是否查看了此讨论,以了解向jar添加依赖项的可能方法:?谢谢您的建议。我浏览了这些示例,并尝试使用maven shade插件,但这并不是我遇到的问题。我已经用这个解决方案更新了pom.xml。谢谢你提供的信息!澄清我所采取的几个错误步骤是有益的。显然,我需要有插件和依赖项标签。我已经用这个解决方案更新了pom.xml
java -cp ojdbc.jar;othernecessary.jar maven-newton-project-1.0.jar