2017-03-16 22 views
0

ドッキング用のコンテナをCentOSとBoot2Dockerでローカルにセットアップしました。目標はPostgresに接続するJAVAアプリケーションをインストールすることです。 1.8のJava JDKおよびJREがインストールされています。 Postgresは起動しています。私はpsqlでそれに接続して作業することができます。ドッカのPostgresに接続するとJAVAアプリ用のJDBCドライバクラスがロードされない

JavaアプリケーションがIntellijでjarファイルとしてコンパイルされました。 POM.xmlファイルが添付されています。すべてintellijにうまくいきます。私は、コマンドラインからドッキングウィンドウでアプリケーションを実行しようとすると、しかし、:APP_NAME.jar -jar javaの、私は、次のエラーメッセージが表示されます。

「のPostgreSQLで発見9.4.1212.jre7

:瓶ファイル:!。:/demo_data/out/artifacts/demo_data_jar/demo_data.jar /org/postgresql/Driver.class

PgJDBCドライバは、実行可能なJavaプログラムではありません

あなたは、JDBCによると、それをインストールする必要があります。アプリケーション/ container/appserverのドライバのインストール手順を確認してから、の形式のJDBC URLを指定して使用してください0 jdbc:postgresql:// またはアプリケーション固有の方法を使用してください。

PgJDBCのマニュアルを参照してください:http://jdbc.postgresql.org/documentation/head/index.html

このコマンドには影響を与えなかった「ここで

はPOMである:。 http://maven.apache.org/xsd/maven-4.0.0 .xsd "> 4.0.0

<groupId>com.align</groupId> 
<artifactId>demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>demo_data</name> 
<description>Program to create demo data for align care.</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.3.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.9</version> 
    </dependency> 

</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

答えて

1

あなたが作成したjarファイルはを使用していますクラスはPostgreSQLのjdbcドライバ(それを実行しようとする人にjava -jar postgresql_jdbc.jarのように警告するためだけのもので、意味をなさないものです)から取得します。

したがって、正しいメインクラスを指定するjarを作成する際には、必ず確認してください。

+0

メインクラスはMANIFESTファイルで「メインクラス:com.align.DemoDataApplication」と正しく参照されていました。ただし、Intellijはこのファイルをsrc/java/META-INF /の下のディレクトリにドロップします。これはMavenプロジェクトでは機能しません。 src/resources/META-INF /の下にある必要があります。 JREはメインクラスを見つけることができなかったので、postgresドライバでメインクラスを見つけ出し、代わりに実行しようとしました。 MANIFESTを手作業でリソースフォルダにコピーし、再コンパイルして動作させました。ご協力いただきありがとうございます。 –

関連する問題