首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于JSP和SIgned小程序

关于JSP和SIgned小程序
EN

Stack Overflow用户
提问于 2010-01-02 09:22:46
回答 2查看 1.3K关注 0票数 0

下面是JSP页面的applet标记:

代码语言:javascript
运行
复制
<applet code="localfile" width=150 height=150>
  <param name="archive" value="localfile.jar">
</applet>

小程序代码为:

代码语言:javascript
运行
复制
package locf;

import java.applet.*;
import java.util.*;
import java.lang.*;
import java.io.*;


public class localfile extends Applet
{

    @Override
    public void init() {}

    @Override
public void start(){

        String s,uno,des = null;
        try {

            Process p = Runtime.getRuntime().exec("ipconfig/all");
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
            File outputFile = new File("/home/elie-m/NetBeansProjects/CMMAC/web/output.txt");
            FileWriter outt= new FileWriter(outputFile);
            System.out.println("MAC ADDRESS:\n");
            while ((s = stdInput.readLine()) != null) {

        Scanner par = new Scanner(s).useDelimiter("      Link encap:Ethernet  HWaddr ");
        if(s.startsWith("eth0"))
        {
        while(par.hasNext()){
        uno=par.next();
            des=par.next();
                outt.write(des);
                    }
        par.close();
        }

            }
            System.exit(0);
        }
        catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
    @Override
public void stop() {}

}

当我启动jsp页面时,我得到这个错误:

代码语言:javascript
运行
复制
Reading certificates from 1580 http://localhost:8080/CMMAC/localfile.jar|/home/elie-m/.java/deployment/cache/6.0/18/57db752-3f3326e8.idx   
java.lang.NoClassDefFoundError:  localfile (wrong name: locf/localfile)     at 
java.lang.ClassLoader.defineClass1(Native Method)       at 
java.lang.ClassLoader.defineClass(ClassLoader.java:621)     at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)     at 
java.net.URLClassLoader.defineClass(URLClassLoader.java:260)    at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at  
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at
java.lang.reflect.Method.invoke(Method.java:597)    at          
sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Plugin2ClassLoader.java:694)  
        at  
sun.plugin2.applet.Plugin2ClassLoader.access$400(Plugin2ClassLoader.java:63)    at 
sun.plugin2.applet.Plugin2ClassLoader$2.run(Plugin2ClassLoader.java:671)    at 
java.security.AccessController.doPrivileged(Native Method)      at     
sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Plugin2ClassLoader.java:633)      at
sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:100)    at
java.lang.ClassLoader.loadClass(ClassLoader.java:307)       at 
java.lang.ClassLoader.loadClass(ClassLoader.java:252)       at 
sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:433)     at 
sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2880)    at 
sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1397) at
java.lang.Thread.run(Thread.java:619)
Exception:java.lang.NoClassDefFoundError: localfile (wrong name: locf/localfile)

此错误发生在我接受权限问题以使用小程序之后。

我不知道把.jar和.class文件放在什么地方,这样客户端才能使用小程序读取,而且我现在甚至不能绕过这个错误进行了两周的搜索。如果需要,我可以在项目中给出整个目录的文件夹/文件结构。只要问你需要什么,我就把它贴在这里。

jar已签名,类已编译,但它似乎找不到我需要运行的applet类。我将jar和类文件放在WEB-INF/classes/locf/和build/web/文件夹中。我还将它们放在另一个web文件夹中,该文件夹与build位于相同的目录中。

操作系统为linux ubuntu 9.10。

EN

回答 2

Stack Overflow用户

发布于 2010-01-02 10:54:19

我从来没有从JSP运行过applet,但是我看到您的Applet在一个名为locf的包中。错误java.lang.NoClassDefFoundError: localfile (wrong name: locf/localfile)表明JAR应该反映该目录结构。提到tutorial,我希望是这样的:

代码语言:javascript
运行
复制
<applet
  code="locf.localfile"
  archive="localfile.jar"
  width="150" height="150">
</applet>

看看jar tf localfile.jar的结果可能会有所帮助。

此外,类名通常使用CamelCase,例如LocalFile

票数 2
EN

Stack Overflow用户

发布于 2010-01-05 03:23:04

您必须将jar放在您使用存档参数指定的路径中。或者更改存档参数以匹配您托管applet jar的位置。

从上面的代码可以看出,applet jar应该位于Web根目录中。这很好,如果它不在那里,你只需要调整你的参数指向jar。

如果您想只保留存档为localfile.jar,则可以使用codebase参数指定目录路径。

下面是一个例子。

您的JSP位于此处

代码语言:javascript
运行
复制
<WebRoot>//myJspFolder/myjsp.jsp

你的罐子在这里

代码语言:javascript
运行
复制
<WebRoot>//myAppletFolder/localfile.jar

您的applet参数将为

代码语言:javascript
运行
复制
 <param name="code" value="locf.localfile.class" />
 <param name="codebase" value="/myAppletFolder/" />
 <param name="archive" value="localfile.jar">

或者不使用代码库参数

代码语言:javascript
运行
复制
 <param name="code" value="locf.localfile.class" />
 <param name="archive" value="/myAppletFolder/localfile.jar">

如果您加载多个jars,则代码库参数非常有用。您可以使用代码库为每个jar提供路径的公共部分。我可以举个例子,但我不想制造混乱。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1990262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档