2011-07-07 10 views
1

Java Web Startを使用してJavaアプリケーションをデプロイしようとしています。スタンドアローンを実行しているときにアプリケーションは正常に動作します。プロジェクトを実行可能な.jarファイルとしてエクスポートし、対応するjnlpファイルを書きました。 JNLPファイルから実行するときに起動するときただし、アプリケーションは以下のエラーを返し実行中のJava Web Start - ClassNotFoundException

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: someClass 
........ 
Caused by: java.lang.ClassNotFoundException: someClass 
......... 

私は、「生成されたJARにパッケージに必要なライブラリ」オプションを使用してEclipseのヘリオスを使用して.jarファイルをエクスポート。ここで

は(私はいくつかの情報を置換)私のJNLPファイルは次のようになります。また

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" 
    codebase="................" 
    href="thisJNLP.jnlp"> 
    <information> 
     <title>Whatever</title> 
     <vendor>Whatever</vendor> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 

    <resources> 
     <!-- Application Resources --> 
     <j2se version="1.6+" 
       href="http://java.sun.com/products/autodl/j2se"/> 
     <jar href="signed.jar" main="true" /> 

    </resources> 
    <application-desc 
     name="Whatever" 
     main-class="thisProject.main" 
     width="300" 
     height="300"> 
    </application-desc> 
    <update check="background"/> 
</jnlp> 

、私はファイルをホストするためのWebLogic 10を使用していますが、私はそれがすべての違いを生むだろう疑います。

誰かが私を助けてくれますか?

入力いただきありがとうございます! WebStart Developer's Guideから

+0

あなたは全く同じjarをスタンドアロンで試しました、つまりコマンドラインから起動しましたか?必要なすべてのクラスがJARにあることを確認しますか? – Thomas

+0

@Thomasはい、スタンドアローンのときは正常に動作します。 –

答えて

1

すべてのアプリケーションリソースは、JNLPファイルのリソースセクションで指定されたJARファイルから取得、またはWebサーバーへのHTTP要求を使用して明示的に取得する必要があります。リソースはJava Web Startによってローカルマシンにキャッシュされるため、JARファイルにリソースを格納することをお勧めします。

したがって、WebStartアプリケーションではクラスローダーのメカニズムが異なります。私はあなたのケースで問題を引き起こすのは、パッケージ化オプション "生成されたJARに必要なライブラリをパッケージ化する"と仮定します。

signed.jarファイルに含まれるjarファイルにクラスsomeClassが含まれていますか?もしそうなら、これはこの理論を取り戻すでしょう - 別々のjarファイルを生成してみてください(それらすべてに署名するのを忘れないでください!)<resources>セクションのそれぞれを別の<jar>エントリーとして参照してください。

+0

答えをありがとう!私はこれが原因だと思うし、私は確認します...編集して申し訳ありませんが、削除しなかったプログラムの情報を取り出しました。 –