我的applet没有看到外部库。一切都可以使用appletviewer,但不能使用浏览器。我在我的“test_applet”文件夹中放入了包含applet类的jar(TreC-Vis.jar),TreC-Vis使用的四个jar库以及带有以下applet标记的html文件:
<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控制台为四个jar库中的每一个提供了java.io.FileNotFoundException。 我指定从相应的Eclipse项目导出TreC-Vis.jar,我将这些库放在“src”包的同一级别的“lib”文件夹中。
我写的applet标签有什么问题? 阅读这里的教程
http://download.oracle.com/javase/tutorial/deployment/jar/downman.html
我一直在考虑将所有东西,applet和库放在一个jar中作为解决方案的可能性,但我需要一些注释中提到的“自定义代码”的例子。 提前谢谢。
答案 0 :(得分:0)
我的applet没有看到外部库。 ..他们只是本地图书馆,.. .class文件..
行。如果那时,你的意思是“。native”,就像.dll,.so等类型的文件一样,这对applet来说是有问题的,因为除非它们已经安装在用户系统的相应目录中,否则它们不能使用本机。
话虽如此,最近的发展允许我们使用Java webstart(JWS)部署嵌入式applet。 JWS很容易使用原生代。只需将它们放在Jar文件的根目录中,然后将它们添加到(基于XML)启动文件(文件类型.jnlp)中的nativelib元素中。
更好的是,JWS可以将下载分成不同操作系统的资源,因此Windows获取.dll本机,而* nix获取.so本机。
JWS提供了许多更有用的功能,但重要的是它们可以使小程序可以使用本机。
在applet中使用本机库,需要信任小程序。
答案 1 :(得分:0)
jar cfm MyApplet.jar MyManifest.txt MyPackage1 MyPackage2 MyPackage3
这是我正在寻找的那条线。这样我就把我的清单放在了外部库的类路径中。
答案 2 :(得分: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中我收到了上述错误。