java - 使用 launch4j 将 ojdbc 包含到 .exe 中

标签 java eclipse ojdbc launch4j maven-shade-plugin

我有一个非常简单的应用程序,它有助于执行有关脚本执行的重复任务。没问题。应用程序在 Eclipse 中完美运行。

我使用 ojdbc14.jar 来处理我的 Oracle DB。

现在,我想创建一个 exe 文件,以便在团队成员之间分发这个小应用程序,但问题是,当我从 .exe 运行我的应用程序时,似乎与数据库根本没有连接。

我正在使用 maven 和 launch4j 将我的应用程序打包到 exe 中,以及 maven-shade-plugin。

这是我的 pom.xml:

<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>miniApp</groupId>
  <artifactId>miniApp</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc</artifactId>
        <version>14</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/ojdbc14.jar</systemPath>
      </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.7.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>shaded</shadedClassifierName>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>miniApp.App</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.akathist.maven.plugins.launch4j</groupId>
            <artifactId>launch4j-maven-plugin</artifactId>
            <version>1.5.1</version>
            <executions>
                <execution>
                    <id>l4j-clui</id>
                    <phase>package</phase>
                    <goals>
                        <goal>launch4j</goal>
                    </goals>
                    <configuration>
                        <headerType>gui</headerType>
                        <jar>${project.build.directory}/${project.artifactId}-${project.version}-shaded.jar</jar>
                        <outfile>${project.build.directory}/miniApp.exe</outfile>
                        <downloadUrl>http://java.com/download</downloadUrl>
                        <classPath>
                            <mainClass>miniApp.App</mainClass>
                            <preCp>anything</preCp>
                        </classPath>
                        <icon>src/Settings.ico</icon>
                        <jre>
                            <minVersion>1.6.0</minVersion>
                            <jdkPreference>preferJre</jdkPreference>
                        </jre>
                        <versionInfo>
                            <fileVersion>1.0.0.0</fileVersion>
                            <txtFileVersion>${project.version}</txtFileVersion>
                            <fileDescription>${project.name}</fileDescription>
 [![enter image description here][1]][1]                           <copyright>2012 hasCode.com</copyright>
                            <productVersion>1.0.0.0</productVersion>
                            <txtProductVersion>1.0.0.0</txtProductVersion>
                            <productName>${project.name}</productName>
                            <companyName>miniApp.com</companyName>
                            <internalName>miniApp</internalName>
                            <originalFilename>miniApp.exe</originalFilename>
                        </versionInfo>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>
</project> 

这是我的 MANIFEST.MF

Manifest-Version: 1.0
Specification-Title:    Oracle JDBC driver classes for use with JDK14
Sealed: true
Created-By: 1.4.2_14 (Sun Microsystems Inc.)
Implementation-Title:   ojdbc14.jar
Specification-Vendor:   Oracle Corporation
Specification-Version:  Oracle JDBC Driver version - "10.2.0.4.0"
Implementation-Version: Oracle JDBC Driver version - "10.2.0.4.0"
Implementation-Vendor:  Oracle Corporation
Implementation-Time:    Sat Feb  2 11:40:29 2008

Name: oracle/sql/converter/
Sealed: false

Name: oracle/sql/
Sealed: false

Name: oracle/sql/converter_xcharset/
Sealed: false

这是我非常简单的项目结构:

prjct

在互联网上搜索,看看是否能得到一些答案,但遇到同样问题的人提出的问题没有得到解答。

关于为什么这可能不起作用的任何想法?

如果我的问题不清楚或遗漏了任何详细信息,请告诉我如何改进我的问题。

提前致谢。

最佳答案

一些评论和答案: (1) ojdbc14.jar 非常旧。您的Oracle数据库是什么版本?可以使用最新的 JDBC 驱动程序吗? ojdbc7.jar 来自 12.1.0.2 或 12.1.0.1 ?

(2) Oracle JDBC 驱动程序不存在于公共(public) Maven 存储库中。因此,您需要从 OTN 手动下载 JDBC 驱动程序。页面

Guide to installing 3rd party Jars “了解更多信息。

mvn install:安装文件\-Dfile=/lib/ojdbc7.jar\-DgroupId=com.oracle\-DartifactId=ojdbc7\-Dversion=12.1.0.1\-Dpackaging=jar\-DgeneratePom=true

关于java - 使用 launch4j 将 ojdbc 包含到 .exe 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35201533/

相关文章:

c++ - MinGW、MinGW-w64 和 MinGW-builds 有什么区别?

java - mac上安装jdk 1.7失败

java - HTTPURLConnection Getoutputstream 挂起

java - 如何在查询中使用 HQL 检查一对是否存在?

java - MongoDB、Java - 从 JSON 查询到文档

java - Eclipse(无法启动 JVM)退出代码=1

css - Eclipse 4.4 Luna 丑陋主题与 XFCE 4.11

java - jdbc kerberos oracle认证问题

Java - JDBC executeUpdate() 不工作

java - 当 v$session.osuser 值超过 30 个字符时处理 JDBC 连接