Java Web Start实例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

  1. JWS让用户可以下载服务器端的Java Application到本机运行,并且没有安装、配置等繁琐的操作
  2. JWS的运行原理:浏览器运行Java Application的链接指向的不是程序本身,而是一个*.jnlp(Java Network Launching Protocol,java网络加载协议 ),该文件包含了Java Application的一些配置信息。浏览器解读这个文件的信息,将服务器端的Java Application下载到本机上,然后运行。由于第一次运行需要下载程序,所以运行比较慢。第二次运行只是检查版本是否有没有更新,如果没有直接在本地运行,如果更新则会自动更新这个程序。

 

Java Web Start实例搭建

  • 新建一个Java Project,命名为JavaWebStart
package jws;import javax.swing.*;public class HelloWord {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {     public void run() {JFrame  jFrame = new JFrame("HelloWorld");                JLabel  label = new JLabel("Hello, world!");      JPanel  jPanel = new JPanel();        jPanel.add(label);        jFrame.add(jPanel);    jFrame.pack();        jFrame.setSize(400, 150);    jFrame.setLocation(400, 300);    jFrame.setVisible(true);    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);              }});}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 打成可执行的Jar包 
    JavaWebStart->Export->Runnable JAR file->选择存放位置和jar名(如:C:\Users\Desktop\JavaWebStart:/HelloWorld.jar)和运行的main方法所在的类(jws.HelloWord)->finish

  • 数字签名 
    对打成可执行文件的HelloWorld.jar包用下面的命令来签名: 
    1、到Dos状态下,,进入你们需发布应用程序的jar包所在的目录,运行下面这句话: 
    keytool -genkey -keystore myKeystore -alias jwstest 
    (它们将会提示你们输入用户名、密码等,,不用理它们,,按照提示随便输入即可,,但一定要记住密码..运行结束它们将会在当前路径下创建名为myKeystore(的)文件..) 
    说明:keytool是JDK自带的一个用于数字签名的工具。该语句的意思是生成一个证书,并且其文件名是:myKeystore。 
    2、用证用为应用程序签名 
    jarsigner -keystore myKeystore HelloWorld.jar jwstest 
    (其中HelloWorld.jar是你们(的)jar包名(这里就是HelloWorld.jar),你们需要修改它们,,别(的)就不必修改了..运行时会提示你们输入密码,,就是你们刚才在生成myKeystore文件时设定(的)密码..)

  • 在tomcat的webapps文件夹下新建一个JavaWebStart文件夹,将HelloWorld.jar文件拷入到它里面。

  • 在JavaWebStart的文件下创建一个helloWorld.jnlp文件。
<?xml version="1.0" encoding="UTF-8"?>
<!--codebase 属性指出搜索应用程序资源的顶级URL, 下面的icon/jar元素都是以这个URL为基本. -->
<jnlp codebase="http://localhost:8080/JavaWebStart/"><information><!-- 在"开始"-"运行"菜单中输入"javaws"或"javaws -viewer"启动Web Start, 会看到客户端已经安装的webstart应用程序 --><!-- title:应用程序标题 vendor:供应商;title/vendor元素是必须, 会显示在用"javaws -viewer"命令打开的应用程序缓存查看器(Java Application Cache Viewer)中 --><title>Hello World</title><vendor>Lively Corporation</vendor><description>HelloWorld Test Example</description><!--homepage :存放有关应用程序的相关文档的URL,如help文件等,仅仅是description作用--><homepage href="http://127.0.0.1:8080/JavaWebStart/index.html" mce_href="http://127.0.0.1:8080/JavaWebStart/index.html" />  <!-- icon 指定图标会显示在应用程序缓存查看器中(作为java web应用程序的图标),在查看器中新建JavaWebStart快捷方式到桌面时也会显示为快捷方式图标,只支持GIF/JPEG格式,其它格式无效 --><icon kind="splash" href="images/Fish13.jpg" mce_href="images/Fish13.jpg" /> <!-- 允许离线启动,可以使用javaws -offline命令-->  <offline-allowed/>      </information><resources><!--  指定客户端需要安装的j2se版本,下面指定为1.5,也可以用1.5+表示1.5版本以上的, 如果这里设置版本为1.5,而我机装的是1.6(所以我这里设置为1.7也会出现后面的问题),那么提示正在请求 JRE 1.5,过一段时间提示:无法启用该应用程序,提示手动更新j2se版本  改为1.5+就可以用1.6的JRE来运行它了  -->  <j2se version="1.5+" />  <!-- 指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载), 可以包含一些资源文件,如icons/configuration files,可以使用getResource方法取得 -->  <jar href="HelloWorld.jar" mce_href="HelloWorld.jar" />  </resources> <!--  此项是指开放用户本机的所有权限给应用程序,这一项会导致弹出一个数字签名对话框。--><security><all-permissions/></security><!--application-desc 必须,指定JavaWebStart启动时执行jar文件中的哪个类-->  <application-desc main-class="jws.HelloWord" />   
</jnlp>  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 新建一个index.html文件
<a href="HelloWorld.jnlp">Launch Application</a>
  • 1
  • 启动Tomcat服务器,输入http://localhost:8080/JavaWebStart/index.html然后点击Launch Application。就可以访问HelloWorld.jnlp文件。服务器根据HelloWorld.jnlp文件来加载HelloWorld.jar文件,就可以在客户端直接运行服务器的资源,它工作过程是先将服务器资源下载到客户机,再运行,每一次访问都会到服务器去看看可执行jar包是否为最新的,本地若不是最新的就重新加载最新的,再运行,保持资源的最新版本。
  • 如果弹出应用程序安全设置阻止(java应用程序已被阻止的问题并不是由于浏览器的安全设置所导致的,而是由于java应用程序的安全设置所产生的,特别是在新版本的java中)解决的办法是。在操作系统的控制面板中点击程序,找到程序中Java,点击进入。Java控制面板中的安全选项卡里,点击编辑站点列表。输入需要访问还有java程序的页面地址,点击添加,忽略安全风险,点击继续。再次在浏览器中运行还有java的页面时,点击运行即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

老派程序员——徒手实现伟大成就

摘要&#xff1a;本文介绍了三位非常著名的程序员&#xff1a;Ken Thompson,Joe Armstrong 和 Jamie Zawinski&#xff0c;他们是如何发明一门新语言&#xff0c;他们开发软件时会像我们一样使用当今流行的开发工具吗&#xff1f;当读Peter Seibel的精彩著作《编程人生:15位软件…

互联网大厂项目研发流程

文章目录阶段一&#xff1a;阶段二&#xff1a;阶段三&#xff1a;阶段四&#xff1a;阶段五&#xff1a;开发人员&#xff1a;测试人员&#xff1a;设计师&#xff1a;阶段六&#xff1a;阶段七&#xff1a;总结&#xff1a;本文章学习自&#xff1a;https://www.bilibili.com…

centos常见错误 Failed to set locale, defaulting to C

错误描述&#xff1a; 当在centos中使用yum命令时&#xff0c;输出错误&#xff1a; [rootlocalhost yum.repos.d]# yum list |grep prceFailed to set locale, defaulting to C 用locale检测&#xff0c;出现如下提示&#xff1a; rootlocalhost yum.repos.d]# localelocale: …

图片上传知识点梳理

在日常项目开发中&#xff0c;图片上传是一个十分常见的场景。而现在的各种UI框架都提供了自己的上传组件&#xff0c;网上第三方的上传组件也多如牛毛。可能你早已习惯了直接使用这些现成的组件&#xff0c;然而对于其具体的实现&#xff0c;却并未深入解析。本文将通过简单的…

解决 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错&#xff1a;Caused by: java.lang.IllegalArgumentException: Repository interface must not be null on initialization! Cause…

【狂神说】JVM

文章目录1.JVM的位置2.JVM的体系结构3.类加载器4.双亲委派机制&#xff08;重要&#xff09;5.沙箱安全机制(了解)6.native&#xff08;核心&#xff09;7.PC寄存器&#xff08;了解&#xff09;8.方法区9.栈10.三种JVM11.堆&#xff08;Heap&#xff09;12.新生区、老年区13.永…

我们真的需要统一的编程规范?

摘要&#xff1a;仁者见仁智者见智&#xff0c;编码风格的不同&#xff0c;对项目也会有不同的影响&#xff0c;统一的编码规范有益于项目的维护。俗话说&#xff0c;没有规矩不成方圆&#xff0c;在2004年&#xff0c;UNIX创始人之一的Ken Arnold就发表了一篇很幽默文章&#…

百度云重磅发布ABC 3.0 尹世明如何诠释百度云的“新”打法

雷锋网9月4日消息&#xff0c;2018百度云智峰会正式召开&#xff0c;百度总裁张亚勤发表题为《新技术驱动&#xff0c;全面进入Cloud2.0》的演讲并表示&#xff0c;经历了PCClient/Server到MobileCloud 1.0&#xff0c;再到如今的AICloud 2.0过程&#xff0c;新技术推动云计算产…

EcmaScript对象克隆之谜

先谈谈深拷贝 如何在js中获得一个克隆对象&#xff0c;可以说是喜闻乐见的话题了。相信大家都了解引用类型与基本类型&#xff0c;也都知道有种叫做深拷贝的东西&#xff0c;传说深拷贝可以获得一个克隆对象&#xff01;那么像我这样的萌新自然就去学习了一波&#xff0c;我们能…

开发人员眼中最好的代码编辑器是谁?

摘要&#xff1a;对开发人员来讲&#xff0c;开发工具就好比战场上的“兵器”&#xff0c;不同领域的开发人员他们所使用的“兵器”也不完全相同&#xff0c;本文从友好性、功能性、扩展等多方面总结了最受开发人员欢迎的“兵器”。你最爱的那个在这里吗&#xff1f; 如果我们把…

关于RESTful一些注意事项,接口开发规范

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 最近在研究restful&#xff0c;公司开发要使用&#xff0c;所以自己就去网上找了好些资料&#xff0c;并整理了一套公司开发的接口规范。…

【老杜】MySQL—day01

文章目录day01课堂笔记1、数据库概述及数据准备1.1、什么是数据库1.2、什么是数据库管理系统1.3、SQL概述1.4、安装MySQL数据库管理系统。1.4、MySQL数据库的完美卸载&#xff01;1.5、MySQL的服务1.6、用命令来启动和关闭mysql服务1.7、登录mysql数据库2、MySQL常用命令&#…

【转载】DRuid 大数据分析之查询

转载自http://yangyangmyself.iteye.com/blog/23217591、Druid 查询概述上一节完成数据导入后&#xff0c;接下来讲讲Druid如何查询及统计分析导入的数据。Druid的查询是使用REST风格的HTTP请求查询服务节点&#xff08;Broker、Historical、Realtime&#xff09;&#xff0c;这…

记录 Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentExce

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff1a; Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentException: Pa…

[转]简单的动态修改RDLC报表页边距和列宽的方法

本文转自&#xff1a;http://star704983.blog.163.com/blog/static/136661264201161604413204/ 1.修改页边距 XmlDocument XMLDoc new XmlDocument();XMLDoc.Load(System.Windows.Forms.Application.StartupPath "\Report_try-2.rdlc");XmlNamespaceManager xmn n…

函数式编程语言天生就慢吗?

摘要&#xff1a;近期&#xff0c;函数式编程得到了越来越多的关注&#xff0c;Lisp不仅重获青春还涌现出了一批新函数式编程语言。因此开发者们对函数式编程语言的运行快慢各抒己见&#xff0c;展开激烈讨论。本文将和大家一起讨论&#xff0c;函数式编程语言真的就慢吗&#…

【老杜】MySQL—day02

文章目录day02课堂笔记1、把查询结果去除重复记录【distinct】10、连接查询10.1、什么是连接查询&#xff1f;10.2、连接查询的分类&#xff1f;10.3、当两张表进行连接查询时&#xff0c;没有任何条件的限制会发生什么现象&#xff1f;10.4、怎么避免笛卡尔积现象&#xff1f;…

vue根据数组对象中某个唯一标识去重

由于在vue中&#xff0c;会自动在数组和对象中加入_obser__观察者模式的一些属性&#xff0c;所以直接用数组的filter去重&#xff08;下面这种&#xff09;&#xff0c;indexOf不能准确识别 var arr [1, 2, 2, 3, 4, 5, 5, 6, 7, 7]; var arr2 arr.filter(function(x, index…

Springsecurity之AuthenticationProvider

2019独角兽企业重金招聘Python工程师标准>>> 注意&#xff1a;AuthenticationProvider与Authentication紧密联系&#xff0c;关于Authentication&#xff0c;看我的这篇博客。 先上一张图&#xff0c;如下图1 图1 AuthenticationProvider的类图 AuthenticationProvi…