JavaFX+;Maven+;Ojdbc6+;IntelliJ(使用Javafx windows应用程序部署oracle jar)
我一直在尝试部署JavaFX应用程序,并将Oracle客户端(ojdbc6)嵌入到同一个jar中 如果我通过IntelliJ运行应用程序,它运行良好并连接到数据库,但一旦我运行“package”任务并尝试通过双击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
"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