【问题标题】:Deploying a .jar into a html page将 .jar 部署到 html 页面中
【发布时间】:2015-02-07 00:56:09
【问题描述】:

所以我在 Java 中有以下代码,它将小程序部署到 html 页面中。

由于安全问题,我正在尝试将其设为 .jar,然后在 .jar 上签名,以首先了解其工作原理。

不幸的是,鉴于.jar 中的主类是相同的,我不确定应该更改哪些内容才能将其作为.jar 运行:

p.println(document+"<applet name=\"myApp\" codebase="+codebase+" code="+code+ " width='+(scnWid-30)+' height='+(scnHei-45)+'>');");
        p.println(document+"<param name=user value=\""+user+"\">');");
        p.println(document+"<param name=sessionid value=\""+sessionid+"\">');");

代码库和代码取自这里:

public void init(ServletConfig config) throws ServletException {
            super.init(config);
            ServletContext context = getServletContext();
            applet_code_base = context.getInitParameter("applet_code_base");
            applet_code = context.getInitParameter("applet_code");

          }

【问题讨论】:

  • 您能告诉我们您的问题是什么吗?或者您可能遇到的“安全问题”的更多详细信息?
  • 嗯,我想知道我应该添加什么到我的代码中以便在 html 页面中运行一个 .jar(一个 .jar 基本上就是那个小程序)。我尝试添加 archive="myjar.jar" 但它没有工作(即使 myjar.jar 与主类位于同一目录中)

标签: java html deployment jar applet


【解决方案1】:

参考Deploying An Applet In Under 10 Minutes

  1. 编译/构建您的小程序的 Java 代码并确保所有类 文件和资源(例如图像等)位于单独的目录中, 例如build/components

  2. 创建一个包含您的小程序的jar 文件 类文件和资源。

    cd build

    jar cvf DynamicTreeDemo.jar components

  3. 如果小程序需要,请签署您的 jar 文件 特殊的安全权限,例如,在具有默认设置的现代 JRE 中启动。默认情况下,未签名的代码将被阻止。

    jarsigner -keystore myKeyStore -storepass abc123 -keypass abc123 DynamicTreeDemo.jar johndoe

    设置密钥库的位置并位于“myKeyStore” 别名是“johndoe” 密钥库密码和别名密码为“abc123”

  4. 创建一个JNLP 文件,描述您的小程序如何 应该启动。

动态树-applet.jnlp

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Dynamic Tree Demo</title>
        <vendor>Dynamic Team</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+"
              href="http://java.sun.com/products/autodl/j2se"
              max-heap-size="128m" />

        <jar href="DynamicTreeDemo.jar" main="true" />

    </resources>
    <applet-desc 
         name="Dynamic Tree Demo Applet"
         main-class="components.DynamicTreeApplet"
         width="300"
         height="300">
     </applet-desc>
</jnlp>     
  1. 创建将显示小程序的 HTML 页面。从部署工具包中调用 runApplet 函数来部署小程序。

AppletPage.html

<body>
    ....
    <script src="http://java.com/js/deployJava.js"></script>

    <script> 
        var attributes = { code:'components.DynamicTreeApplet',  width:300, height:300} ; 
        var parameters = {jnlp_href: 'dynamictree-applet.jnlp'} ; 
        deployJava.runApplet(attributes, parameters, '1.6'); 
    </script>
    ....
</body>                 
  1. 对于本示例,将 DynamicTreeDemo.jardynamictree-applet.jnlpAppletPage.html 放在本地计算机或 Web 服务器上的同一目录中。测试此小程序不需要 Web 服务器。

  2. 在 Web 浏览器中查看 `AppletPage.html。将显示动态树演示小程序。查看 Java 控制台日志以获取错误和调试消息。

欲了解更多信息,请参阅Deployment Toolkit 101 - Java Tutorials Blog

【讨论】:

  • 好的,我有点明白这一点,但我遇到的问题是我的 html 页面是使用 java 构建的,所以我不能将 Applet.html 与其他人放在同一目录中,因为它确实没有'不存在。
  • 现在不支持小程序标签。无论如何我可以在没有小程序的情况下运行 jar 文件吗?
【解决方案2】:

this 地址的 Oracle 网站说:

要从 HTML 文件启动任何小程序以在浏览器中运行, 您使用小程序标签。有关详细信息,请参阅 Java 小程序 课。如果小程序捆绑为 JAR 文件,那么您唯一需要的 需要做不同的是使用archive参数来指定 JAR 文件的相对路径。

它声称

<applet code=TicTacToe.class 
        archive="TicTacToe.jar"
        width="120" height="120">
</applet>

是适当的html 代码,用于显示与html 文件在同一目录中存储为TicTacToe.jar 的小程序。

【讨论】:

    猜你喜欢
    • 2013-02-19
    • 2020-08-10
    • 2021-05-13
    • 2014-12-21
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 2018-09-25
    相关资源
    最近更新 更多