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.pswp.cn/news/450793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450793.shtml
英文地址,請注明出處:http://en.pswp.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…