1

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

我的代码有问题吗?它总是提出类未找到问题。

<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{
4

2 回答 2

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")

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

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

即使在受信任的小程序中,也不允许这样做。一个小程序可能与其他小程序共享一个虚拟机。

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

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

否则,好吧.. 为了尽快获得更好的帮助,请发布SSCCE。或至少前 37 行Snake.java. :)

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 问题(通常是小程序开发)。

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

于 2013-08-26T04:04:16.287 回答
0

你创建了一个可执行的 JAR吗?试试看这里

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

于 2013-08-26T03:21:27.447 回答