2016-07-04 5 views
1

現在私の会社のプロジェクトでXMLデータをデータベースにインポートしています。これを行うにあたり、私は、すでに作成され、他のプロジェクトで使用されている基本的な構成プロジェクト、つまりEntityManagerBuilderまたはOracleデータベースへの接続を作成するために使用される他のユーティリティー・クラスに依存します。そして、それらの依存関係が私のためにいくつかの問題を作り出しているように思えます。Mavenのインストールは成功しましたが、jarがbash(CLI)から正しく動作しません

Eclipse内でプロジェクトを起動すると、プロジェクトが正常に動作します。そして、私がmvn clean install -DskipTestsでプロジェクトを作成すると、すべてうまく構築されます。 しかし、私はコマンドラインからアプリケーションを起動したいときに、いくつかの行のコードが停止した後に、エラーや例外をスローしません。

私はそれがいくつかの依存関係と関係があると思う理由は、ログを記録することによって、アプリケーションが停止する箇所を見つけることができたからです。私が調べることができる時点で停止してから、私はそれをやりました。私はソースをダウンロードしただけでいくつかのロギングを追加しました。突然、私のアプリケーションはそのクラスで全く問題なく、代わりに他のクラスへの次の静的呼び出しで停止しました。

どこでエラーを検索するかわかりません。これは毎月のタスクとして自己によって実行されなければならないアプリケーションであるため、Eclipseから実行することは選択肢ではありません。

うまくいけば、誰かが私にこれを解決するヒントを与えることができたらうれしいです。ここで

は私のPOMです:

<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> 
<parent> 
    <groupId>com.company.infrastructure.foo</groupId> 
    <artifactId>foo</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<artifactId>foo-import</artifactId> 
<packaging>jar</packaging> 
<name>FooImport</name> 

<properties> 
    <company.consoleapp.main.class>com.company.infrastructure.foo.import.FooImporter</company.consoleapp.main.class> 
</properties> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.company.maven</groupId> 
      <artifactId>company-standalone-dm</artifactId> 
      <version>${company.parent.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 

    <!-- Logging --> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
    </dependency> 

    <!-- Utilities --> 

    <dependency> 
     <groupId>args4j</groupId> 
     <artifactId>args4j</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-impl</artifactId> 
     <version>2.2.11</version> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.xml.bind</groupId> 
     <artifactId>jaxb-core</artifactId> 
     <version>2.2.11</version> 
    </dependency> 

    <!-- Using foo-dataaccess --> 

    <dependency> 
     <groupId>com.company.infrastructure.marken</groupId> 
     <artifactId>foo-dataaccess</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 

</dependencies> 

<build> 
    <finalName>foo-import</finalName> 
    <plugins> 

     <!-- Consoleapp-Mixin --> 

     <plugin> 
      <groupId>com.github.odavid.maven.plugins</groupId> 
      <artifactId>mixin-maven-plugin</artifactId> 
      <configuration> 
       <mixins> 
        <mixin> 
         <groupId>com.company.maven</groupId> 
         <artifactId>company-consoleapp-mixin</artifactId> 
         <version>${company.parent.version}</version> 
        </mixin> 
       </mixins> 
      </configuration> 
     </plugin> 

    </plugins> 

</build> 

答えて

0

私はあなたが自動的にこれらのバージョンからのバージョンとMavenの数字を指定していないので、これは、Mavenの中にあなたの依存関係の管理とは何かかもしれないと思います。

ただし、アプリケーションを実行するときに、クラスパスにそれらのjarが必要です。そうでないと、jarファイルが使用できないため、ClassNotFoundExceptionが発生する可能性があります。したがって、あなたの依存関係があなたが言及したようなものであることを理解してクラスパスに追加しない限り、エラーが発生することになります。

アプリケーションのさらなるレベルのログを有効にして、エラーがどこにあるかを示すことができます。また、失敗した時点でクラスパスで利用できない外部ライブラリが参照されているかどうか試してみることもできます。

CLIを使用してアプリケーションをどのように実行しているかを教えてください。

+0

私はあなたが依存関係管理について正しいと思います。私は今それを調べています、そして、それは他の瓶がそこにあるようですが、それのSNAPSHOTバージョンとこれは何とかそれを台無しにしています。私は 'java -jar foo-import.jar/data -o option'を実行しています。私に正しい方向を指摘してくれてありがとう。 – kaba713

関連する問題