我有引用2罐签署的applet:“禁止包名称:java.util中的” 上的Class.forName( “java.util中...”)在小程序
- myapplet.jar
- 杰克逊 - 全1.9.9.jar
当启动applet的第二次(第一次是没有错误),我得到这个:
Exception in thread "thread applet-main.MyApplet-1"
java.lang.ExceptionInInitializerError
at org.codehaus.jackson.map.deser.StdDeserializerProvider.<init>(StdDeserializerProvider.java:81)
at org.codehaus.jackson.map.ObjectMapper.<init>(ObjectMapper.java:398)
at org.codehaus.jackson.map.ObjectMapper.<init>(ObjectMapper.java:358)
at org.codehaus.jackson.map.ObjectMapper.<init>(ObjectMapper.java:328)
at net.Remote.<init>(Remote.java:50)
at main.Env.init(Env.java:44)
at main.MyApplet.init(MyApplet.java:25)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.SecurityException: Prohibited package name: java.util
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.codehaus.jackson.map.deser.BasicDeserializerFactory.<clinit>(BasicDeserializerFactory.java:74)
... 9 more
李NE的问题是在以下try-catch块的第一个:
try {
Class<?> key = Class.forName("java.util.ConcurrentNavigableMap");
Class<?> value = Class.forName("java.util.ConcurrentSkipListMap");
@SuppressWarnings("unchecked")
Class<? extends Map<?,?>> mapValue = (Class<? extends Map<?,?>>) value;
_mapFallbacks.put(key.getName(), mapValue);
} catch (ClassNotFoundException cnfe) { // occurs on 1.5
}
一对夫妇的事情,我不明白:
- 为什么我Java7的JVM不把它了其运行时的图书馆?但宁
- 为什么它尝试从我的服务器下载
/java/util/ConcurrentNavigableMap.class
,显然失败与404
? -
作为失败,为什么它 尝试重新下载myapplet.jar
25倍快速连续,每成功一次(200
),每一次返回相同的jar文件?
更新我不知道是否25重试类加载器试图加载类引起的,它可能是一些其他的代码试图加载的资源(这仍然是奇怪,但与CurrentNavigableMap
问题无关),所以我会从我的问题中排除这一点。
N.B.我想它不会尝试重新下载杰克逊jar文件,因为该文件在cache_archive
属性中列出。
你确定你使用java7?如果不使用Class.forName(),则使用java.util.ConcurrentNavigableMap.class会发生什么? –
根据Java控制台,我同时设置为与applet一起启动:'1.7.0_07-b11 Java HotSpot(TM)Client VM' –
使用[Java Web Start](http://stackoverflow.com/tags)/Java的Web启动/信息)。每次都会得到一个新的虚拟机,这可能会解决问题。然后向Oracle报告错误的详细信息。 –