2016-12-05 11 views
0

Microsoft Azure Storageを使用するJavaプログラムがあります。 Windowsプラットフォームで実行すると、エラーは発生しませんが、Linuxプラットフォームで同じプラットフォームを実行すると、次のエラーが発生します。Linuxプラットフォームで、Windowsではなくjava.lang.NoClassDefFoundErrorを取得する

Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.microsoft.azure.storage.core.Utility 

可能性のある説明は誰にでも分かりますか?

+0

どのようにLinuxに依存関係をインストールしましたか? Maven経由ですか? – sguler

+0

プログラムはコンパイルされ、Windowsプラットフォーム上にビルドされました.mavenはビルドに使用されていました。これはLinuxまたはWindowsプラットフォーム上で実行できます。ビルド時の依存関係を含むコンパイル済みコードを実行していたため、Linuxに依存関係を別途インストールする必要はありませんでした。 – Aparna

+0

@Aparna Linux上でMavenの環境変数M2_HOMEを設定して、 '$ PATH '? –

答えて

0

Mavenを使用してLinux上でJavaプログラムを実行する際によくある問題です。

コマンドmvn -vなどのコマンドを実行すると、次のような問題が発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: xxxxxxxxx
Caused by: java.lang.ClassNotFoundException: xxxxxxxxxxx

通常、このケースには次の2つの理由があります。

  1. 環境変数M2_HOMEをファイルで設定できませんでした。以下のコマンドで設定してください。

    export M2_HOME=<the maven installed path> # for example, /opt/apache_maven/ 
    export PATH=$PATH:$M2_HOME/bin 
    
  2. 現在のユーザーは、Windowsからアップロードされたファイルまたはディレクトリは、Linuxのファイルシステムの許可情報が欠落しているので、いくつかのファイルやディレクトリにアクセスする権限を持っていません。ですから、下記のコマンドでファイルやディレクトリのアクセス権を変更してみてください。

    chmod -R 660 <the maven project name> # Sometimes, try to use 777. 
    

それがお役に立てば幸いです。

関連する問題