当前位置: 首页 > 知识库问答 >
问题:

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

赵智勇
2023-03-14

我一直试图将JavaFX应用程序与Oracle客户机(ojdbc6)嵌入到同一个JAR中进行部署。

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

"java -jar .\maven-Newton-1.0-SNAPSHOT.jar"

应用程序启动,但它不会连接到DB:

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

我刚刚开始使用maven,我不太确定我的配置是否正确:

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

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

•我还弄乱了模块依赖关系:

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

<?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>

谢谢

共有1个答案

养淇
2023-03-14

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

java -cp ojdbc.jar;othernecessary.jar maven-newton-project-1.0.jar

顺便说一句,在maven中存在依赖项(代码工作所需的)和插件(maven构建所需的)之间的区别。您对maven-compiler-plugin和maven-resource-plugin的依赖使我觉得您混淆了这两个概念。

我将把这两个文件移到名为 的部分中,而不是放在maven-jar-plugin旁边。

 类似资料:
  • 我试图在NetBeans中构建一个可以部署到用户和最终用户的应用程序。我对部署项目还是相当陌生的,这是迄今为止我做过的最复杂的一个,所以请容忍我。我目前在NetBeans中有一个工作应用程序,它利用JDK15和JavaFX15。只要我在NetBeans内部运行,一切都会按预期运行。我已经到了我想确保我可以在NetBeans之外发布这个应用程序的地步。为此,我进行了一些搜索,找到了以下教程。 htt

  • 我遵循了https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/中的步骤 但是当我尝试构建工件时,在最后一步中,我得到了这个错误 错误:Java FX Packager:无法生成工件-FX:Deploy在此JDK中不可用 这里有一个快速测试的hello world应用程

  • 版本 openjdk版本“11.0.11”2021-04-20 如果可能的话,请不要告诉我像我以前看到其他人回答的那样“阅读基础知识”。我只是不确定为什么我的代码不能在我的最后一个项目中运行。 提前谢谢你!

  • 我的朋友最近给我发送了我们正在处理的javaFX项目的源代码。但是我无法运行它,因为它没有正确配置。如果我尝试将其配置为“应用程序”,但它不允许我选择MainClass文件。它最初是在Eclipse中编程的。有人能解释一下我如何运行这个程序吗?在项目结构中,我将Artifacts设置为javaFX应用程序,但这似乎没有改变什么。

  • 我创建了一个JavaFX Maven应用程序,其中包含一些资源文件(在项目文件夹“src/main/resources”中)。该应用程序在NetBeans环境下运行良好。然而,当构建了自包含的JAR文件并将其复制到另一个文件夹时,应用程序的可视项(组合框、TextFields、VBoxes、...)没有正确显示(不同的颜色、错误的填充、...)。 CSS文件存在于JAR文件中,因为应用程序中(Ne

  • 问题内容: 由于fxml- files使用Controller类来处理事件,因此如何混淆JavaFX应用程序?当混淆的conntroller类具有不同的名称和路径时,fxml文件将找不到它们。 混淆后编辑fxml文件不是我想要的解决方案。 还有其他选择吗? 问题答案: 没有意义重塑轮子; 快速的google搜索产生了这个网站。 它使用Proguard混淆器。