我实现了一个简单的java Hello world程序,它使用JNI来访问本机C文件。我成功地实现了它。我已执行以下网址中提到的步骤。
http://www.java-tips.org/other-api-tips/jni/simple-example-of-using-the-java-native-interface.html
现在,我有这些文件 -
我需要在上述文件的帮助下创建一个applet。换句话说,我想将Java Applet与JNI一起使用。我试过搜索它,但我得到了windows .dll文件的所有解决方案,而不是.so文件。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
请看一下这个帖子。它似乎涵盖了你的问题: Calling a DLL from an Applet via JNI
注意:您应该只更换' .dll'您的' .so'提交的文件文件(和文件路径OS相对格式化)。
答案 1 :(得分:0)
以下是我执行的代码和步骤 -
HelloWorld.java
import javax.swing.JApplet; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*;
public class HelloWorld extends Applet{
public native String print();
static{
System.load("/var/www/libHelloWorld.so");
}
public void paint(Graphics g){
HelloWorld hw = new HelloWorld();
g.drawString("Message: " + hw.print(), 5, 15);
}
}
我编译了java文件并使用java jni创建了HelloWorld.h文件。
然后创建了一个C文件并将其编译为生成的libHelloWorld.so文件。
Jar文件包含HelloWorld.class和libHelloWorld.so文件。
jar文件已签名,HTML代码如下:
<HTML>
<HEAD>
</HEAD>
<BODY>
<div style="border:1px solid black;" >
<APPLET CODE="HelloWorld.class" ARCHIVE="HelloWorld.jar" WIDTH="800" HEIGHT="800">
</APPLET>
</div>
</BODY>
</HTML>
当我在我的机器上安装的浏览器中打开html时,上述工作正常。
但是,当我尝试从其他计算机访问它时,会抛出错误。
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: /var/www/libHelloWorld.so
我试过搜索解决方案,但没有发现任何帮助。