我有一个使用我制作的库的Java Applet。在Eclipse上的另一个项目中使用的库完美地工作。在applet上,当我调用" main"的构造函数时class,我得到一个PrivilegedActionException。构造函数唯一要做的就是创建一个对象实例,最终实现Java的Serializable,用于访问互联网。您可以在此处查看课程:CommonsDataLoader.java。正如您所见,此类实现了DataLoader.java,它实现了Serializable。
我可以在applet中运行一个测试函数,它只是从JS接收一个字符串并返回一个新的字符串。这非常有效。
所以......我似乎在这里做错了什么,也没有看到任何与众不同的东西。那么为什么例外?
注意:
我正在使用maven来构建jar。清单是使用maven-assembly-plugin的<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
标记创建的。我认为我必须提供权限:对清单的所有权限,但如果我这样做,测试功能甚至不起作用。
编辑:
Manifest的标题:
Manifest-Version: 1.0
Implementation-Title: myApplet
Implementation-Version: 0.0.1-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: pedrocunha
Implementation-Vendor-Id: myProject
Created-By: Apache Maven
Build-Jdk: 1.8.0_25
有关DataLoader的清单上的行:
Name: eu/europa/ec/markt/dss/validation102853/loader/DataLoader.class
SHA-256-Digest: Aua3IW0faYfh4Mf3Q08wMxZc/WU0S2DuF6fJoE+pRpM=
关于CommonsDataLoader的清单上的行:
Name: eu/europa/ec/markt/dss/validation102853/https/CommonsDataLoader.class
SHA-256-Digest: d4zCM6GVllA0Fy/pm4D6Z8OZf+jHR58VPCUIq786cr0=
答案 0 :(得分:0)
所以,我想我找出了遗失/发生的事情。首先,一些子项目的poms存在问题,这些子项目被宣布为pom而不是jar。 然后,清单需要所有权限声明和代码库。我将*分配给了代码库。 每个罐子里面的所有东西都必须签名。 jnlp文件必须包含
<security>
all-permissions
</security>
需要特权的applet中的代码需要位于doPrivileged内(即访问硬件,套接字等)。
如果设置了所有这些,那么它将起作用。至少它对我有用。