2016-02-04 5 views
1

У меня есть ДЕЙСТВИТЕЛЬНО простое приложение, которое помогает в повторяющихся задачах, связанных с исполнением сценариев. Нет проблем с этим. Приложение отлично работает в eclipse.Включая ojdbc в .exe с launch4j

Я использую 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? ojdbc7.jar из 12.1.0.2 или 12.1.0.1?

(2) Драйверы JDBC Oracle отсутствуют в общедоступном хранилище maven. Итак, вам нужно будет загрузить драйверы JDBC вручную OTN страницы

Guide to installing 3rd party Jars "для получения дополнительной информации

МВН установить:. Установить-файл \ -Dfile =/Библиотека/ojdbc7.jar \ -DgroupId = com.oracle \ -DartifactId = ojdbc7 \ -Dversion = 12.1.0.1 \ -Dpackaging = jar \ -DgeneratePom = true

+0

Hi @Nirmala, спасибо за ваш ответ. Я использую ojdbc14, потому что мы работаем над Oracle 10g DB. Я уже скачал драйвер ojdbc вручную, так как вы можете видеть в моем pom, ссылки repo на локальный файл: $ { проект. basedir} /lib/ojdbc14.jar. Проблема с драйвером. Приложение работает отлично, когда я запускаю его из затмения. Проблема в том, что драйвер не упаковывается в .exe. Поэтому, когда я запускаю свое приложение из exe, он не может найти драйвер. –