1

ファイルを作成しましたが、Blogger で実行できません。これに関する多くの情報を見てきましたが、実行できないようです。

私のコードに問題はありますか? クラスが見つからないという問題が常に発生します。

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

Snake.javaおそらく、コードの 37 行目で次のようなことを行っています。

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

信頼できるアプレットであっても、これは許可されません。アプレットは、VM を他のアプレットと共有する場合があります。

私の予測が正しい場合は、代わりに次のことを試してください。

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 に答える