[core java学习笔记][第十章部署应用程序]
第10章 部署应用程序和applet
- jar文件
- Java Web Start
10.1 jar文件
jar文件就是一个压缩了类,图像和声音的ZIP压缩文件
创建一个新的JAR文件应该使用的常见命令格式:
jar cvf JARFileName File1 File2 ...
例如
jar cvf CalculatorClasses.jar *.class icon.gif
通常,jar 的命令格式如下
jar options File1,File2,.....
以下列出jar程序的可选项
一般 -cvf 常用即可
10.1.1 清单文件
- 命名为
MANIFEST.MF用于描述归档特征的清单文件。 要想创建一个包含自己清单文件的jar应该用这样的命令
jar cfm JARFileName ManifestFileName ....
例
jar cfm MyArhive.jar manifest.mf com/mycompany/mypkg/*.class
要想更新一个已有JAR文件的清单,执行一下指令
jar ufm MyArchive.jar manifest-additions.mf
10.1.2 可运行JAR文件
两种方式
可以使用jar命令中的e选项指定程序的入口点
jar cvfe MyProgram.jar MainAppClass otherclassfile
或者,再清单文件指定应用程序的主类,最后一行必须以换行符结尾
Main-Class: MainAppClass
- 还有第三方打包器,能将jar文件转换为.exe的Windows程序,查找和加载Java虚拟机,甚至再没有找到JVM的时候告诉用于做什么
10.1.3 资源
- 图像和声音文件
- 带有消息字符串和按钮标签的文本文件
- 二进制数据文件
要调用资源有一下几步
- 获得具有资源的Class对象。例如,
AboutPanel.class,只能调用这个对象目录下的资源 - 如果资源是一个图像或声音文件,那么就需要调用
getresource(filename)获得作为URL的资源位置,然后利用getImage或getAudioClip进行读取 - 其他资源用getResourceAsStream方法读取文件中的数据
读取图像
URL url= ResourceTest.class.getResource("about.gif");
Image img=new ImageIcon(url).getImage();
//或者
URL aboutURL = getClass().getResource("about.gif");
Image img = new ImageIcon(aboutURL).getImage();
意思是再ResourceTest.class所处的当前目录下查找
读取文本
InputStream stream=ResourceTest.class.getResourceAsStream("about.txt");
Scanner in=new Scanner(stream);
- 获得具有资源的Class对象。例如,
还可以利用相对路径和绝对路径
10.1.4 密封
Java可以密封包,如果不密封包,其他类就有可能放在这个包中,进而访问包可以见性
如何密封?
修改清单文件
Name: com/mycompany/util/
Sealed: true Name: com/mycompany/misc/
Sealed: false
然后利用上面所学的打包,或者更新包的清单文件。
10.2 Java Web Start
略
10.3 applet
略
10.4 应用程序首选项存储
- 属性映射
- 首选项API
10.4.1 属性映射
属性映射(property)是一种KEY/VALUE对的数据结构。常用来存放配置信息。
三个特性
- key和value都是String
- 容易从文件读入或读出
- 用二级表存放默认值
实现这样的类叫
java.util.Properties放入
Key/valueProperties settings=new Properties();
setting.put("width","200");
setting.put("title","Hello,World!");
使用
store方法保存到文件,必须要检查异常,否则编译不通过FileOutputStream out = new FileOutputStream("a.out")
settings.store(out,"hello");
使用
load加载这些文件FileInputStrem in = new FileInputStrem("a.out");
settings.load(in);
使用
getProperty获取value两种方式
settings.getProperty("title"); 直接获得key=title的value,不存在返回none settings.getProperty("title","Default title"); 不存在时返回第二个参数
构造函数可以直接用别的Properties来初始化
Properties defaultSettings= new Properties();
Properties settings=new Properties(defaultSettings);
以下是完整代码
import java.util.*;
import java.io.*; public class test
{
public static void main(String args[])
{
Properties settings=new Properties();
settings.put("zhouyong","1111");
settings.put("luan","2222");
//wirte
try{
FileOutputStream out = new FileOutputStream("a.out");
settings.store(out,"hello");
}
catch (IOException ex)
{
ex.printStackTrace();
}
//read
try{
FileInputStream in = new FileInputStream("a.out");
settings.load(in);
}
catch (IOException ex)
{
ex.printStackTrace();
} }
}
10.4.2 Preferences API
- 一个不以平台变更的中心配置库,所有当前机器的java程序公用
- 能通过xml来导入导出
- value值可以为int ,等类型
- 具体怎么用以后慢慢学
[core java学习笔记][第十章部署应用程序]的更多相关文章
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...
- [core java学习笔记][第四章对象与类]
4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); sta ...
- Core Java 学习笔记——2.基本数据类型&类型转换
数据类型(8种基本类型:int/short/long/byte/float/double/char/boolean) 整型 int 4字节 -2 147 483 648~2 147 483 647 s ...
- [core java学习笔记][第十一章异常断言日志调试]
第11章 异常,断言,日志,调试 处理错误 捕获异常 使用异常机制的技巧 使用断言 日志 测试技巧 GUI程序排错技巧 使用调试器 11.1 处理错误 11.1.1异常分类 都继承自Throwable ...
- [core java学习笔记][第六章接口与内部类]
接口域内部类 接口 描述类具有什么功能,不给出具体实现. 内部类 用于设计协作关系的类集合 代理 实现任意接口的对象. 6.1 接口 接口声明 public interface Comparable ...
- [core Java学习笔记][第一二三章基本语法]
基本语法 1 Java 简单的类型 1.1 一些常量 正无穷大 Double.POSITVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY 不存在 Double.NaN ...
- [core java学习笔记][第五章继承]
5.1 类.超类和子类 定义 class Manager extends Employee { 添加方法和域 } 权限 派生类不能使用基类的私有变量 派生类调用基类的方法 利用super这个关键词 s ...
- Java学习笔记-13.创建窗口和程序片
1.init()方法:程序片第一次被创建,初次运行初始化程序片时调用. start()方法:每当程序片进入web浏览器中,并且允许程序片启动他的常规操作时调用(特殊的程序片被stop()关闭):同样在 ...
- 疯狂Java学习笔记(72)-----------大话程序猿面试
大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函 ...
随机推荐
- Oracle - SQL 错误: ORA-00917: 缺失逗号
ORACLE SQL语句中int型插入数据库时,不要加引号.
- (转)union和union all的区别
Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需要将两个s ...
- Java的Object对象
Object对象是除了基础对象之外,所有的对象都需要继承的父对象,包括数组也继承了Object Object里面的关键函数罗列如下: clone();调用该函数需要实现 Cloneable,否则会抛出 ...
- React-nwb的使用
一.查看nwb的版本 nwb -v 二.创建一个react项目 nwb new react-app react-demo 三.启动项目 nwb serve
- 连接Oracle11g数据库时遇到无监听,网络适配器无法建立等问题的一些解决办法
最近在用Java做一个学生成绩管理系统,打算用Oracle数据库.由于原先没接触过Oracle,所以安装完数据库后,连接数据库时遇到各种问题,网上搜索解决方案还是没有解决时,又重新安装了几次.终于在前 ...
- Lanucherr 默认显示第几屏
Launcher.java static final int SCREEN_COUNT = 5;static final int DEFAULT_SCREEN = 2;//第一页是从0开始计数,这里是 ...
- JDBC 异常特殊原因 (数据库只读解决办法)
JDBC 异常特殊原因 有时候并不是因为程序写的有问题 ,是因为 数据库只读 在sqlserver2005中附加数据库时,附加的数据库会变成只读的,只能进行查询操作. 解决方法: 1 打开Sq ...
- vector-2
assign函数 语法: void assign( input_iterator start, input_iterator end ); void assign( size_type num, co ...
- Jquery函数实现时间显示模式为更新于+被当前时间减去后剩余的时间值(例如:更新于三小时前)的处理。
var time_eles = $(".time_tranfer"); for(var i =0; i < time_eles.length;i++){ var time_e ...
- 影响MySQL性能的五大配置参数
我们今天主要和大家分享的是对MySQL性能影响关系紧密的五大配置参数,以下就是文章的具体内容描述,希望会给你带来一些帮助在此方面. 以下的文章主要是对MySQL性能影响关系紧密的五大配置参数的介绍,我 ...