Java 小程序不显示在浏览器中

Java 小程序不显示在浏览器中,java,jar,applet,Java,Jar,Applet,我有以下小程序: jar之前的小程序:http://s1.picofile.com/file/6923855130/Game_III_Applet.7z.html 我已将其嵌入到我的HTML页面中,如下所示: <applet code="FrameS.class" archive="Game.jar" width=1000 height=800></applet> 但是,我的MSIE浏览器中没有显示任何内容。这是如何造成的,我如何解决它?如果您只提供.jar包,我们无法

我有以下小程序:

jar之前的小程序:http://s1.picofile.com/file/6923855130/Game_III_Applet.7z.html

我已将其嵌入到我的HTML页面中,如下所示:

<applet code="FrameS.class" archive="Game.jar" width=1000 height=800></applet>

但是,我的MSIE浏览器中没有显示任何内容。这是如何造成的,我如何解决它?

如果您只提供.jar包,我们无法测试它

请提供更多信息,或者通过查看java错误控制台自行解决

例如,我得到了这个异常,说我缺少back.jpg图像资源

java.lang.reflect.InvocationTargetException
at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116)
at sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3542)
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3073)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1498)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission back.jpg read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
at sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:871)
at sun.awt.SunToolkit.getImage(SunToolkit.java:885)
at apple.awt.CToolkit.getImage(CToolkit.java:934)
at FrameS.<init>(FrameS.java:59)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at sun.plugin2.applet.Plugin2Manager$13.run(Plugin2Manager.java:3061)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception: java.lang.reflect.InvocationTargetException

在IE中嵌入小程序时,请使用object标记,这是一个php函数,它根据浏览器输出小程序嵌入代码。您将看到不同的浏览器处理方式不同-

function getApplet($jarFile,$className,$params = array(),$width=1,$height=1,$name='japplet')
{
$retVal = "";

$useApplet = 0;
$user_agent = $_SERVER['HTTP_USER_AGENT'];

if (stristr($user_agent, "konqueror") || stristr($user_agent, "macintosh") || stristr($user_agent, "opera")) {
    $useApplet = 1;
    $retVal = sprintf('<applet name="%s" id="%s" archive="%s" code="%s" width="%s" height="%s" MAYSCRIPT >',$name,$name,$jarFile,$className,$width,$height);
} else {
    if (strstr($user_agent, "MSIE")) {
        $retVal = sprintf('<object  name="%s" id="%s" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" style="border-width:0;" codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_1-windows-i586.cab#version=1,4,1"  width= "%s" height= "%s">',$name,$name,$width,$height);
    } else {
        $retVal = sprintf('<object  name="%s" id="%s" type="application/x-java-applet;version=1.4.1" width= "%s" height= "%s">',$name,$name,$width,$height);
    }

    $params['archive'] = $jarFile;
    $params['code'] = $className;
    $params['mayscript'] = 'true';
    $params['scriptable'] = 'true';
    $params['name'] = $name;

}

foreach ($params as $var=>$val)
{
    $retVal .= sprintf('<param name="%s" value="%s">',$var,$val);
}

$retVal .= 'It appears you do not have Java installed or it is disabled on your system.<br />
                Please download it <a href="http://www.java.com/getjava/" class="link" target="_blank">here</a>';
if ($useApplet == 1) {
    $retVal .= '</applet>';
} else {
    $retVal .= '</object>';
}

return $retVal;
}
对象标记是嵌入小程序时所需的

Caused by: java.security.AccessControlException: 
    access denied (java.io.FilePermission back.jpg read)
小程序应该使用URL来访问其资源。资源可以位于Jar文件中,如4.7 meg Game.Jar,该文件位于小程序的运行时类路径上,即归档属性中提到的路径,或者与小程序或小程序的代码库位于同一服务器上

在第一种情况下,可以使用..形成URL

URL urlToPic = this.getClass().getResource("images/back.jpg");
。。图像位于Jar的图像路径中

在第二种情况下,可以相对于小程序的代码库或文档库形成URL。例如

URL urlToPic = new URL(this.getDocumentBase(), "images/back.jpg");
。。其中,图像位于包含小程序的目录的images子目录中


接受文件参数的方法通常也会接受InputStream或URL。

我忘了写我的html以no结尾,你忘了读代码格式规则。您需要将代码缩进4个空格。我已经把这个问题一概而论了。里面有很多噪音。否则,你只会得到反对票。直截了当地问问题就行了。不费吹灰之力,对你自己和我们都有很大的帮助。你是真的!我真的很抱歉亲爱的..交叉发布的.谢谢Andrew..你非常合法礼貌:&hi..不,这个小程序没有这个例外。我自己写的,我发送小程序文件没有jar文件小程序有这个例外,当你提供不完整的源文件包时,当尝试加载不存在的文件时,它没有捕获到异常,而您显然没有提供这是我的苹果。这确实没有任何异常,并且运行良好。我使用e-clipseObject标记制作jur是嵌入小程序时所需的-1这是错误的,与小程序失败的原因无关。我假设它只在MSIE中失败。我再说一遍,这是我的应用程序,在e clipse上运行时没有任何故障。当我想在浏览器上运行应用程序时,所有问题都会发生。