.Jar不会在Blogger上运行

时间:2013-08-26 03:12:41

标签: java security jar applet accesscontrolexception

我已经制作了我的文件但无法让它在博客上运行。我已经查看了很多关于此的信息,似乎无法让它运行。

我的代码有问题吗?它始终会出现类未找到的问题。

<applet 
    code = "Snake" 
    archive = "Snake.jar" 
    height=300 
    width=300 
    codebase="https://sites.google.com/site/zmchenryfilecabinet/filecabinet/">
</applet>

这是命令提示符中 jar tf Snake.jar 命令的输出:

META-INF/MANIFEST.MF
.classpath
Snake.class
Apple.class
applescaled.png
bodySprite.png
headSprite.png
apple.png
Snake.java
controlScreen.jpg
snakehead.png
endAnimation.gif
apple1.png
snakebody.png
.project

在清单中,我的类文件后面有一个空行,在清单中显示为:

Manifest-Version: 1.0
Main-Class: Snake

我的主要课程也以

开头
public class Snake extends JApplet{

2 个答案:

答案 0 :(得分:1)

控制台输出

我在打开下面的HTML时看到的一些控制台输出。

..
security: SSV validation: running: 1.7.0_25, requested: null, range: null
network: Created version ID: 1.7.0.25
network: Created version ID: 1.7.0.25
security: continue with running version
basic: exception: java.lang.ExceptionInInitializerError.
java.lang.RuntimeException: java.lang.ExceptionInInitializerError
    ... 
Caused by: java.lang.ExceptionInInitializerError
    at Snake.<init>(Snake.java:37)
    ... 
Caused by: java.security.AccessControlException: 
  access denied ("java.lang.RuntimePermission" "exitVM.0")
    ... 26 more
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@169a11f
security: Reset deny session certificate store

分析

特别注意:

at Snake.<init>(Snake.java:37)

以及:

..AccessControlException: access denied ("java.lang.RuntimePermission" "exitVM.0")

可能在Snake.java的第37行,代码正在执行以下操作:

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

即使在受信任的applet中也不允许这样做。 applet可能与其他applet共享VM。

如果我的预测是正确的,请尝试改为:

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

否则,嗯..为了更好的帮助,请发布SSCCE。或者至少是Snake.java的前37行。 :)

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>Applet</h1>
<applet
    code = "Snake"
    archive = "Snake.jar"
    height=300
    width=300
    codebase="https://sites.google.com/site/zmchenryfilecabinet/filecabinet/">
</applet>
</body>
</html>

类缓存

暂且不说。如果您仍然遇到NCDFE问题(通常还有applet开发)。

要在开发过程中解决类/代码缓存问题,请确保在测试运行软件之间刷新Java控制台中的类缓存。

答案 1 :(得分:0)

您是否创建了可执行JAR ?试着看here

否则,如果您有ClassNotFound错误,则表示您的JAR中缺少某些类。 你在项目中使用了一些库吗?如果是,请确保在可执行JAR中提取它们。