我写了一个基础的applet。修改了init方法,重写了paint方法,代码如下。
public void paint(Graphics g)
{
Output outClass = new Output();
g.drawString("hahaha",20,20);
g.drawString(outClass.getString(),10,10);
}
        public void init() { 
setLayout(new FlowLayout()); 
add(new Button("预览")); 
}
outclass为我写的一个工具类类,引入了一个第三方的jar包叫做“jna.jar”。代码如下:import com.sun.jna.NativeLong;
public class Output {
public String getString()
{
NativeLong m_lUserID = new NativeLong(1);//用户登录句柄
return "You are in the Output Class" +m_lUserID.intValue();
}
}
网页调用1.htm,部分代码如下:
  <body>
    <applet codebase="." 
            code="TestSimpleApplet.class" 
            name="TestSimpleApplet" 
    archive="jna.jar"
            width="320" 
            height="240">
    </applet>
  </body>
【注】Output.class,TestSimpleApplet.class,jna.jar,1.htm均放在同一目录下。
点击调用,
实际显示结果“hahaha”,一个"预览"button.
期待结果:“hahaha”,一个"预览"button.还有一句"You are in the Output Class 1"。
结果说明:applet调用成功,但是涉及到jna包调用的问题,就显示不出来结果。情况就是这样,那位兄台可以回答我的问题,不胜感谢。弄了两天了。
之所以调用这个jar包,主要是因为我需要调用一些c++的基础DLL,必须调用。所以先测试一下调用后applet可否显示在网页上。

解决方案 »

  1.   

    补充一下,单独用MyEclipse运行TestSimpleApplet.java文件是可以产生正确的结果的。就网页调用不行。期待中
      

  2.   

    这个不是静态网页吗?需要服务器吗?不过,我开始也试过放在tomcat服务器下了。貌似也不行。
      

  3.   

    用AppletViewer调用该html。有错误信息,我打印出来一部分。感觉上就是包问题。NativeLong就是我调用包时所有。
    Exception in thread "AWT-EventQueue-1" java.lang.ExceptionInInitializerError
            at com.sun.jna.NativeLong.<clinit>(NativeLong.java:23)
            at Output.getString(Output.java:5)
            at TestSimpleApplet.paint(TestSimpleApplet.java:104)
            at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
            at sun.awt.RepaintArea.paint(RepaintArea.java:224)
            at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:306)
            at java.awt.Component.dispatchEventImpl(Component.java:4706)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            at java.awt.Component.dispatchEvent(Component.java:4460)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchTh
    ad.java:269)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThrea
    java:184)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchTh
    ad.java:174)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: java.security.AccessControlException: access denied (java.util.Prop
    tyPermission jna.boot.library.path read)
            at java.security.AccessControlContext.checkPermission(AccessControlCon
    xt.java:323)
            at java.security.AccessController.checkPermission(AccessController.jav
    546)
            at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
            at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:
    85)
            at java.lang.System.getProperty(System.java:650)
            at com.sun.jna.Native.loadNativeLibrary(Native.java:645)
            at com.sun.jna.Native.<clinit>(Native.java:108)
            ... 16 more
      

  4.   

    初始化异常
    在getString()这个方法里面,
    m_lUserID.intValue();你确认这一行能拿到数据吗?
    建议先写一个测试程序看能不能拿到这个值
      

  5.   

    archive="jna.jar"
    可能是你这个写的有问题。
      

  6.   

    回复"xiesisi3".这个我确定,因为这个程序我测试许多遍了。绝对没有问题。
      

  7.   

    回复“bayougeng”。我也觉得是包引入的问题,但是除了这么写,我也不知道有什么写法了。
      

  8.   

    archive="./jna.jar"
    这样写试试。
    这个东西和<link href="_pub/style.css" rel="stylesheet" type="text/css" />这个应该是同样的道理。
    其实一共就这么几种写法,自己很容易试出来。我以前搞过,忘了。
    还有,你应该看看浏览器中的java控制台的异常信息。
      

  9.   

    "bayougeng"按照你的说法做的。异常信息是。
    Reading certificates from 11 http://localhost:8080/ThirdProject/jna.jar | C:\Documents and Settings\Administrator\Application Data\Sun\Java\Deployment\cache\6.0\53\351b4e75-1e310892.idx
    Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError
    at com.sun.jna.NativeLong.<clinit>(NativeLong.java:23)
    at Output.getString(Output.java:5)
    at TestSimpleApplet.paint(TestSimpleApplet.java:104)
    at sun.awt.RepaintArea.paintComponent(Unknown Source)
    at sun.awt.RepaintArea.paint(Unknown Source)
    at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission jna.boot.library.path read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at com.sun.jna.Native.loadNativeLibrary(Native.java:645)
    at com.sun.jna.Native.<clinit>(Native.java:108)
    ... 16 more
    Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.NativeLong
    at Output.getString(Output.java:5)
    at TestSimpleApplet.paint(TestSimpleApplet.java:104)
    看起来好像是不让访问本地的jar文件。你看对不?估计是这方面的问题,我再去网上找找看。
      

  10.   

    1.jna是否还有关联的包?
    2.applet的安全问题。
      

  11.   

    楼主applet中这个问题有没有办法解
    network: 未找到高速缓存项 [url: http://localhost:8088/PQEP//jar/com/mathworks/jmi/Matlab.class,版本: null]
    network: 正在使用代理 DIRECT 连接 http://localhost:8088/PQEP//jar/com/mathworks/jmi/Matlab.class
    network: 正在使用代理 DIRECT 连接 http://localhost:8088/
    network: 正在使用代理 DIRECT 连接 http://localhost:2100/
    network: 正在使用代理 DIRECT 连接 http://localhost:2876/
    matlabcontrol.MatlabConnectionException: Support code location was determined improperly; location does not actually exist. Location determined as: C:\PQEP\jar\matlabcontrol-4.0.0.jar
    at matlabcontrol.Configuration.getSupportCodeLocation(Configuration.java:232)
    at matlabcontrol.RemoteMatlabProxyFactory.createProcess(RemoteMatlabProxyFactory.java:278)
    at matlabcontrol.RemoteMatlabProxyFactory.requestProxy(RemoteMatlabProxyFactory.java:116)
    at matlabcontrol.RemoteMatlabProxyFactory.getProxy(RemoteMatlabProxyFactory.java:134)
    at matlabcontrol.MatlabProxyFactory.getProxy(MatlabProxyFactory.java:81)
    at com.ordinov.pqep.util.test.MatlabUtil.init(MatlabUtil.java:31)
    at com.ordinov.pqep.util.test.Test$test$1.actionPerformed(Test.java:42)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
    at com.ordinov.pqep.util.test.MatlabUtil.isConnected(MatlabUtil.java:81)
    at com.ordinov.pqep.util.test.Test$test$1.actionPerformed(Test.java:43)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)