gpt4 book ai didi

JavaFX + Maven + Ojdbc6 + IntelliJ(使用适用于 Windows 的 Javafx 应用程序部署 oracle jar)

转载 作者:行者123 更新时间:2023-11-30 06:25:40 25 4
gpt4 key购买 nike

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

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

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

应用程序启动,但无法连接到数据库:

enter image description here `

在我尝试过的代码中:

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

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

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

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

enter image description here

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

enter image description here

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

enter image description here

但是我的问题可能出在 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>

不太确定从这里去哪里,非常感谢任何帮助。

谢谢

最佳答案

问题在于,您使用“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 的依赖表明您混淆了这两个概念。

我会将这两个移动到名为 <build><plugins> 的部分中相反,与 maven-jar-plugin 一起。

如果您想要一个易于理解的开始,请尝试以下操作:http://www.darrencoxall.com/java/understanding-maven/

关于JavaFX + Maven + Ojdbc6 + IntelliJ(使用适用于 Windows 的 Javafx 应用程序部署 oracle jar),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47256915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com