2017-06-26 15 views
0

JDBCを使用してハイブサーバーに接続しようとしている配置可能なmavenプロジェクトがあります。これは、このようなものですMANIFEST.MFを持っているjarファイルを生成しmaven deployable jar "java.lang.ClassNotFoundException:org.apache.hadoop.hive.jdbc.HiveDriver"エラー

<dependencies> 
    <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc --> 
    <dependency> 
     <groupId>org.apache.hive</groupId> 
     <artifactId>hive-jdbc</artifactId> 
     <version>2.1.1</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <mainClass>com.test.Main</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

:これは私のPOMファイルである

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Built-By: test 
Class-Path: hive-jdbc-2.1.1.jar hive-common-2.1.1.jar ... 
Created-By: Apache Maven 3.3.9 
Build-Jdk: 1.8.0_72 
Main-Class: com.test.Main 

、私はjava -jar test.jarを使用してjarファイルを実行しようとすると、I get

java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 

マニフェストファイルのクラスパスにjarファイルが正しく設定されていても、この例外が発生するのはなぜですか?

ありがとうございました。

+0

test.jarの横に依存関係はありますか? – JEY

答えて

2

依存関係で参照されているjarがjavaによって見つからないようです。おそらくターゲットジャーと同じフォルダにはありません。

あなたはdeploayable Mavenプロジェクトで何を意味するかに応じて、あなたは、可能な解決策のカップル

  • を持っているコンテナ
  • のクラスパスに依存関係を追加使用して依存関係を含む「脂肪」jarファイルを(ビルドあなたが指定した場所に、ローカルまたはリモートリポジトリからあなたの依存関係をコピーするmaven-dependency-pluginを追加することができます
0

Mavenの日陰またはアセンブリプラグイン)

​​

または別のオプションの使用などmaven-assembly-plugin 確かにjarファイル(ハイブ)あなたが欲しいん作るhere

0

を参照してください...それはdiferentバージョン
を持っているので、古いverisonジャーは

org.apache.hadoop.hive.jdbc.HiveDriver

です

ここにはmvnrepository

であり、最新の瓶は01ですはここに新しいですsettings

あなたの間違いは、新しい瓶名の古い依存関係を使用しています。

関連する問題