ここに私のコードとその中でどのように私はネイティブライブラリを使用しています。それは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では上記のエラーが発生しました。
これらのライブラリはPostgres JDBCドライバ、その空間拡張PostGISなどです。それらはネイティブライブラリであり、変更せずにWebからダウンロードしました。Eclipseは.classファイルにアイコン "J010"をマークします – mattia