2011-01-04 7 views
0

私のアプレットには外部ライブラリは表示されません。すべてがアプレットビューアを使用して動作しますが、ブラウザは使用しません。アプレットとライブラリ

<applet code="gui.Gui" archive="TreC-Vis.jar,postgresql-8.4-701.jdbc4.jar,postgis_1.5.0.jar,jfreechart-1.0.13.jar,jcommon-1.0.16.jar" width="1024" height="768"> </applet> 

のJava:私は、アプレットクラス、TREC-Visので使用される4つのjarライブラリと、次のアプレットタグを含むHTMLファイルを含む私の「test_applet」フォルダのjar(TREC-Vis.jar)に置かれていますコンソールは私に4つのjarライブラリのそれぞれに対してjava.io.FileNotFoundExceptionを与えます。 対応するEclipseプロジェクトからTreC-Vis.jarをエクスポートしたことを指定します。これらのライブラリは、「src」パッケージと同じレベルの「lib」フォルダに配置します。

私が書いたアプレットタグの何が問題なのですか? 私は解決策として、1瓶に、すべてのもの、アプレットおよびライブラリを置くために可能性を検討してきたここ

http://download.oracle.com/javase/tutorial/deployment/jar/downman.html

チュートリアルを読んで、私はで述べた「カスタムコード」のいくつかの例が必要になりますノート。 ありがとうございます。

+0

これらのライブラリはPostgres JDBCドライバ、その空間拡張PostGISなどです。それらはネイティブライブラリであり、変更せずにWebからダウンロードしました。Eclipseは.classファイルにアイコン "J010"をマークします – mattia

答えて

0
jar cfm MyApplet.jar MyManifest.txt MyPackage1 MyPackage2 MyPackage3 

これは私が探していたラインでした。このようにして、私は外部ライブラリのクラスパスを明示しました。

0

私のアプレットには外部ライブラリが表示されません。 ..これらはネイティブライブラリ、.classファイルです。

OK。そうであれば、.dll、.soなどのファイルのように 'ネイティブ'を意味します。これは、アプレットがユーザーシステムの適切なディレクトリにインストールされていないと、ネイティブを使用できないという点で問題です。

最近の開発では、Java Web Start(JWS)を使用して埋め込みアプレットをデプロイすることができました。 JWSはネイティブを簡単に使用します。それらをJarファイルのルートに配置し、(XMLベースの)起動ファイル(ファイルタイプ.jnlp)のnativelib要素に追加するだけです。

さらに、JWSはさまざまなオペレーティングシステム用のリソースにダウンロードを分けることができるため、Windowsは.dllのネイティブを取得し、* nixは.soのネイティブを取得します。

JWSはもっと便利な機能を提供しますが、ここで重要な点は、アプレットがネイティブを利用できるようにすることです。

アプレットでのネイティブライブラリの使用では、アプレットを信頼する必要があります。

+0

私はよりシンプルで直接的になるでしょう。 * .class部分をアプレットの4つの.classファイルのパッケージに置き換えるには、このコマンドをどのように変更しますか: "jar cmf myManifest.txt myAppletFile.jar \ *。class"この方法で、外部ライブラリを参照する私のマニフェストを使ってアプレットjarを作成できるはずです。 – mattia

0

ここに私のコードとその中でどのように私はネイティブライブラリを使用しています。それはWindowesで作業を行いますが、それは、Linuxで動作しないと私は受け取り

アクセスが拒否されました( "java.lang.RuntimePermission" "loadLibrary.hello")ここで

は私のJNLPです:

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="" href=""> 

    <resources> 
     <!-- Application Resources --> 
     <j2se version="1.7+" 
       href="http://java.sun.com/products/autodl/j2se"/> 
     <jar href="applet.jar" main="true" /> 
     <nativelib download="eager" href="libhello.jar"/> 
    </resources> 
    <applet-desc 
     name="Math Applet" 
     main-class="NativeHelloApplet" 
     width="10" 
     height="1"> 
    </applet-desc> 
    <update check="background"/> 
</jnlp> 

マイアプレット:

import java.security.*; 
import javax.swing.*; 

public class NativeHelloApplet extends JApplet 
{ 
    public native String displayHelloWorld(); 
    public native int initPKE (int[] retVal); 

    public NativeHelloApplet() { 
    } 

    public void init() 
    { 
     // privileged code goes here, for example: 
     System.loadLibrary("hello"); 
     getContentPane().add(new JLabel("Test")); 
     getContentPane().add(new JLabel(displayHelloWorld())); 
    } 
} 

私のネイティブ。Cコード:

#include <jni.h> 
#include "NativeHelloApplet.h" 
#include <stdio.h> 

JNIEXPORT jstring JNICALL 
Java_NativeHelloApplet_displayHelloWorld(JNIEnv *env, jobject obj) 
{ 
    return (*env)->NewStringUTF(env,"Hello world!\n"); 
} 

マイHTMLページ:

<Html> 
<Head> 
<Title>Java Example</Title> 
</Head> 
<Body> 
This is my page<br> 
Below you see an applet<br> 
<br> 
<script language="javascript" type="text/javascript" src="deployJava.js"></script> 
<script> 
      var attributes = { 
       id:   "sswSignApplet", 
       code:  "NativeHelloApplet", 
       width:  300, 
       height:  60 
      }; 
      var parameters = {jnlp_href:"launch.jnlp"}; <!-- Applet Parameters --> 
      var version = "1.6"; <!-- Required Java Version --> 
      deployJava.runApplet(attributes, parameters, version); 
     </script> 
</Body> 
</Html> 

libhello.jarは私のネイティブコードの共有オブジェクトが含まれており、htmlとJNLPと同じフォルダに位置しています。

hello.jar(hello.dllを含む)をリソースセクションに置くと、Windowsで動作しますが、Linuxでは上記のエラーが発生しました。