2016-02-04 78 views
1

我有一個非常簡單的應用程序,它有助於執行有關腳本執行的重複性任務。沒有問題。 App在eclipse中完美運行。將ojdbc包含到帶有launch4j的.exe文件中

我使用ojdbc14.jar來處理Oracle數據庫。

現在,我想創建一個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

搜索互聯網,看看我能否得到一些答案,但來自人們的問題g同樣的問題沒有回答。

任何想法,爲什麼這可能不工作?

如果我的問題不清楚或者我錯過了任何詳細信息,請告訴我如何改進我的問題。

在此先感謝。

+0

如果沒有人可以幫助我,有人會告訴我另一種方法來實現我的目標嗎?另一種工具?謝謝 –

回答

0

很少意見和解答: (1)ojdbc14.jar很舊。什麼是您的Oracle數據庫的版本?你可以使用最新的JDBC驅動程序嗎?從12.1.0.2或12.1.0.1的ojdbc7.jar?

(2)Oracle JDBC驅動程序不在公共Maven存儲庫中。所以,你需要從OTN

Guide to installing 3rd party Jars「手動下載JDBC驅動程序以獲取更多信息

MVN安裝:安裝文件\ -Dfile =/lib中/ ojdbc7.jar \ -DgroupId = com.oracle \ -DartifactId = ojdbc7 \ -Dversion = 12.1.0.1 \ -Dpackaging = jar \ -DgeneratePom = true

+0

嗨@Nirmala,感謝您的回答。我使用的是ojdbc14,因爲我們正在使用Oracle 10g數據庫。我已經手動下載了ojdbc驅動程序,因爲您可以在我的pom中看到repo鏈接到本地​​文件: $ {項目。 basedir} /lib/ojdbc14.jar。駕駛員沒有問題。當我從eclipse運行它時,應用程序正在運行。問題是,驅動程序沒有被壓縮到.exe中。所以當我從exe中運行我的應用程序時,找不到驅動程序。 –