小编And*_*rea的帖子

Applet隐藏的classnotfound异常

我正在开发一个行为奇怪的applet:这不是通常的"我无法在浏览器中启动我的applet"问题,而是更微妙的东西.

applet包含一个带有8个选项卡的jtabbedpane,每个选项卡在工作流中执行一些数据操作,用户有两个按钮(后退和前进)循环选项卡.

当我将它运行到浏览器(最新的chrome或firefox,但这没关系)时,我注意到从第7个选项卡传到第8个选项卡时一致的减速:在后者中,我在该选项卡中放置了一个带有自定义tablemodel的jtable,在日食中它运行得很好.稍后我会注意到jvm会为类RateTableModel抛出一个classnotfoundexception,这是我的自定义tablemodel.奇怪的是,即使我在IDE中测试applet,也作为自签名applet在浏览器中测试异常从未在任何控制台中抛出.我在任何地方都进行了验证:没有空的catch块,每个异常都会始终打开stackstrace,如果我将tablemodel的初始化代码放在try/catch块中,那么异常永远不会被捕获.

我想问的是有关为什么会发生这种情况的任何想法.

RateTableModel类位于geotel.utils包中,在我必须加载这个类之前,我有其他类我经常实例化,并且我验证了这个类存在于jar中.

有关开发的详细信息(可能对于那些阅读此内容的人可能很有用):

使用该命令对applet进行签名

jarsigner -keystore keystore3 C:\GestioneOneri.jar me3
Run Code Online (Sandbox Code Playgroud)

applet从以下html文件运行:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <title>Titolo</title>
    </head>
    <body>
        <script src="http://www.java.com/js/deployJava.js"></script>
        <script> 
            var attributes = {code:'geotel.gui.Login.class', 
                    archive:'GestioneOneri.jar,mysql-connector-java-5.1.20-bin.jar,poi-3.9-20121203.jar,forms-1.3.0.jar', 
                    width:1024, height:700} ;
            var parameters = {jnlp_href:'gestioneoneri.jnlp', portalUrl:'http://192.168.146.145:8080/GestioneOneriServlet', nomeUtente:'', numeroPratica:'', percorsoFileCalcoloOneri:"/", nomeFileCalcoloOneri:"calcoloOneri.xls"} ; 
            var version = '1.6' ;
            deployJava.runApplet(attributes, parameters, version);  
        </script>
        <noscript>This page requires JavaScript.</noscript>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

JNLP文件如下:

<?xml version="1.0" encoding="UTF-8"?>
    <jnlp href="gestioneoneri.jnlp">
        <information>
            <title>Gestione Oneri Urbanistici</title>
            <vendor>Geotel soc. coop.</vendor>
            <offline-allowed />
        </information>
        <resources>
            <j2se version ="1.6+" initial-heap-size="128m" max-heap-size="1024m" …
Run Code Online (Sandbox Code Playgroud)

java applet classloader classnotfoundexception

5
推荐指数
1
解决办法
910
查看次数