试着用applet打开记事本

时间:2014-06-27 18:20:09

标签: java javascript html applet notepad

我尝试使用applet从浏览器打开记事本。是的,我知道这对安全性来说很糟糕,但它是一个概念证明。我原本试图在APEX中使用javascript来做到这一点,但无济于事。无论如何,这是我的小程序:

package opennote;
import java.applet.*;
import java.net.*;


public final class OpenNote extends Applet{

public static void init(String[] args){
    try{
        ProcessBuilder derp = new ProcessBuilder("Notepad.exe","myfile.txt");
        derp.start();
    }
    catch(Exception e){
        System.out.println("Stuff didn't work);
    }
}
}

我的HTML是

<html>
<title>This applet opens the notepad</title>
<hr>
<applet code=OpenNote.class width="320" height="120">
If my browser is Java-enabled, I will open the notepad.
</applet>
<hr>
<html>

当我将applet作为一个应用程序时,它起作用了,但这并不是很多。当我打开HTML时,它会显示&#34;如果我的浏览器...&#34;在我允许安全性运行java applet之前的消息。然后javascript加载,消息消失,它给我一个应用程序错误。错误是&#34; NoClassDefFoundError&#34;,唯一的信息是&#34; OpenNote(错误的名称:opennote / OpenNote) 类文件保存在与HTML相同的目录中。

谁能看到我做错了什么?当然,除了安全风险之外。

编辑: 我放弃了记事本的概念证明。这似乎是一个挂断。所以这是我的新问题。我只是有一个应用程序。它写一个输出。这是一个错误。

package ex;
import java.applet.*;
import java.net.*;


public final class EX extends Applet{

public static void main(String[] args){
    System.out.println("Here be monsters");
}
}

我的HTML是

<html>
<title>This applet writes stuff</title>
<hr>
<applet code="Ex.class" width="320" height="120">
If my browser is Java-enabled, I will write stuff
</applet>
<hr>
<html>

当我把它放入时我得到了错误

NoClassDefFoundError的

Ex(错误的名字:ex / Ex)

然后我更改了代码&#39; javascript中的属性为&#34; ex.Ex.class&#34;我收到以下代码:

ClassNotFoundException的

ex.Ex.class

该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要在html中正确指定您的班级。 像

<applet code="opennote.OpenNote.class" width="320" height="120">

OR

<applet code="opennote\OpenNote.class" width="320" height="120">

这是因为您的代码在opennote包中。

答案 1 :(得分:1)

  

类文件保存在与HTML相同的目录中。

那是错误的地方。

  1. 如果该类在Jar中,则需要位于Jar的opennote'子目录中。
  2. 如果Jar中的类,则需要位于opennote目录中,该目录(给定无代码库)本身需要与HTML位于同一目录中。

  3. 顺便说一句:

    • 使用File
    • 打开Desktop.getDesktop().open(File)的更安全的跨平台方式
    • applet正在打开最终用户计算机上的文件,这是不寻常的(至少可以说)。为什么这个小程序试图这样做?
    • 为什么编写applet代码?如果是由于规格。请教老师,请参阅Why CS teachers should stop teaching Java applets
    • 要成为有效的HTML,上面看到的需要一个body元素。使用validation service检查HTML。