0

私のタイトルが示すように、問題はクラスローディングにあり、アプリケーションがジャージコア クラスを resteasy にキャストしようとしているという事実にあると思います。以下は、それをトリガーするコードとエラーです。

java.lang.LinkageError: ClassCastException: attempting to castjar:file:/C:/Program%20Files/NetBeans%207.3/enterprise/modules/ext/rest/jersey-core-1.13.jar!/javax/ws/rs/ext/RuntimeDelegate.classtojar:file:/C:/Documents%20and%20Settings/hwng/My%20Documents/NetBeansProjects/pics-client/branding/target/netbeans_clusters/pics_client/modules/ext/org.jboss.resteasy/jaxrs-api-2.3.5.Final.jar!/javax/ws/rs/ext/RuntimeDelegate.class
at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:126)
at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:96)

コード:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
    IRoutesService client = ProxyFactory.create(IRoutesService.class,
            "http://localhost:8080/rest/routeservice/");
    client.postRoute(txtRouteName.getText());
}                         

現在、私の NetBeans プラットフォーム モジュール (maven) は次のものに依存しています。

<dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.3.5.Final</version>
    </dependency>
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>myapp-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

myapp-api は、サーバー上にもある jar であり、サービスと対話するために使用されます。myapp-api の POM には、次の依存関係があります。

<dependencies>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasy.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>${resteasy.version}</version>
    </dependency>
</dependencies>

全体として、NetBeans が jersey-core への参照を何も持っていないように見えるのに、なぜリモートで jersey-core を見ようとしているのか、私にはわかりません。ヘルプやアドバイスをいただければ幸いです。

RouteTopComponent を右クリックしてランタイム クラスパスを確認すると、そこに jersey-core がはっきりと表示されます。どうすればそれを取り除くことができますか?

4

1 に答える 1

0

私の場合、これは初心者のばかげた間違いでした。NetBeans で F6 キーを押す (実行する) と、NetBeans プラットフォーム アプリケーション (mavenized) が自動的に起動すると想定しています。ただし、本来あるべきものを起動していませんでした。NetBeans プラットフォームの新しいインスタンスで TopComponent を起動していました (したがって、すべての Jersey クラスがロードされました)。

実際に my-application-app を右クリックして実行を選択するだけで、実際にアプリケーションを正しく起動することができました。

おそらく、これは私と同じ仮定をしてファイルを直接実行しようとする人にとって役立つでしょう。

于 2013-04-10T14:03:54.963 に答える