web-dev-qa-db-ja.com

クラスパスで定義されているにもかかわらず、「Java.lang.ClassNotFoundException:com.google.gson.Gson」エラーが発生します

Gson-1.6.jarを使用して取得するJSONオブジェクト文字列を解析しようとしています。他の.jarと同じ場所に配置し、Eclipseのビルドパスに追加しました。

他のライブラリを追加すると問題なく機能し、問題なく使用できますが、JSONオブジェクトを作成しようとすると、エラーが発生します。私はこのエラーで他の質問に目を通しましたが、私が試したものや無関係なものを含まない解決策を見つけることができませんでした。

私はそれを使用して上部近くにインポートします:

import com.google.gson.Gson;

その後、次のような静的関数で使用します。

Gson g = new Gson();

以下は、実際のパスの代わりにEclipseで生成されたクラスパスファイル[パス]です。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6">
        <attributes>
            <attribute name="owner.project.facets" value="Java"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.Eclipse.jst.server.core.container/org.Eclipse.jst.server.Tomcat.runtimeTarget/Apache Tomcat v5.5">
        <attributes>
            <attribute name="owner.project.facets" value="jst.web"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.Eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.Eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="lib" path="[Path]/jabbabase-ws-jwsdp-client-2.4.7.jar"/>
    <classpathentry kind="lib" path="[Path]/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="[Path]/gson-1.6.jar"/>
    <classpathentry kind="output" path="build/classes"/>
</classpath>

私のビルドパスウィンドウと同様に: Build Path Screen

私はこの時点で少し迷っています。私はGoogleを試しましたが、基本的には投稿はビルドパスに追加するように言っているだけです。誰にもアイデアはありますか?

編集:詳細

Com.google.gson.GSONを参照するコードは、jspによってBeanとして使用されます。この関数はjspから呼び出され、関数が実行されるとすぐにエラーが発生します。関数の最初の行は次のとおりです。

Gson g = new Gson();

コンパイルとデプロイは問題ないようですが、実行するとエラーメッセージが表示されます。

ありがとう

28
Fry

JSP/Servlet Webアプリケーションの場合、サードパーティのJARファイルを/WEB-INF/libフォルダ。プロジェクトがDynamic Web Projectである場合、Eclipseはビルドパスの設定も自動的に処理します。 not Eclipseビルドパスをいじる必要があります。すべてを元に戻すことを忘れないでください。

57
BalusC

私は同じ問題に直面し、上記の解決策を試みましたが、それらのどれも私のために働きませんでした。その後、次の手順を試して問題を解決しました。

  • プロジェクトのプロパティに移動します。
  • Java Build Pathオプションに移動します。
  • それから加えて *.jarファイルを外部jarとして。
  • 次に、順序とエクスポートオプションに移動し、プロジェクトのライブラリとjarを選択します。
  • 現在の変更を保存してプロジェクトをクリーンアップし、プロジェクトを再度実行します。
20
karn

クリック Deployment Assembly(真上Java Build Pathアクティブとして表示します)、そこにjson-lib-2.4-jdk15.jarが表示されることを確認します。

通常、ビルドパスに追加して、プロジェクトからエクスポートする必要があります。エクスポートされると、WTPがデプロイメントの一部ではないという警告が表示されます。 Quick Fixオプションを選択し、展開パスに追加します。

私はちょうど同じ問題を抱えていました...

(少なくとも私の場合)問題を解決するには、バンドルクラスパスにlibフォルダーが含まれていることを確認します。

Manifest-Version: 1.0
... 
Bundle-ClassPath: lib/gson-1.6.jar,
 .
...

または、すべてのjarをフォルダーに含める場合:

Bundle-ClassPath: lib/

上記のように、jarファイルをJavaビルドパスに配置する必要があります。インポートしたjarファイルは、「Referenced Libraries」フォルダーに表示されます。

3
Joseph Carroll

私にとっては、Apache/Tomcat/libフォルダーにjarを追加することで問題は解決しました! 。

1
karthik339

Eclipse内でビルドおよび実行すると、上記のエラーが発生しましたが、このエラーを除き、すべてが正常であると思われました。しかし、Mavenビルドが失敗し、pom.xmlにGsonを含める必要があることを発見しました。 pom.xmlを修正すると、すべてが適切に配置されました。

0
Jeff Taylor

[マーカー]タブでクイック修正を行います。

Image Source metamug.com

リファレンス: https://metamug.com/blog/Eclipse-gson-class-not-found

0
Sorter

Eclipse環境でKNIME Node/pluginを開発するときにも同じ問題がありました。解決策は、gson.jarを外部JARとしてビルドパスに追加するだけでなく、plugin.xml、[依存関係]タブをクリックし、com.google.gsonを必須プラグインとして追加します。

0
mwdoerner