开发第一个java项目的问题总结
只是一个简单的java项目(第一次把java 代码生成个像样的项目)
一、界面
首先想使程序有个界面,不用太好看。然后就用到了一些基础的swing组件对象:JFrame、JTable、JPanel、JMenuBar、JMenu、JMenuItem;swing布局对象:GridLayout、FlowLayout;以及一些方法:addWindowListener、setMnemonic、setActionCommand、addActionListener。界面比较简单,这里只遇到一个问题:组件JMenu添加ActionListener事件,点击无效。能够添加,不报错,就是无效果。这个组件有一个MenuListener事件,这个添加后可以。
二、java项目中使用文本格式的配置文件,如.ini文件。
这里java有一个类可以操作这样的文件:Properties。它其中有一个获取文件的方法是properties.load();需要一个参数,参数可以是inputstrean或是Reader。随后就可以用方法properties.getProperty(key)获取存储的数据了。数据格式一般是这样的:
这里遇到了一个问题:
就是java找文件时有两个方法:一是getClass().getResource("/configuration/config.ini");
二是getClass().getResourceAsStream("/configuration/config.ini");第一个返回的是一个URL对象,在用此对象获得文件路径,进而获得文件流。第二个返回的直接就是inputstream流。这里的问题就是,第一种方法如果把项目打成jar包运行,程序就会找不到ini文件。因为打成jar包后,程序在找文件时的路径会是.jar!/configuration/config.ini。会去jar包下找,并且路径上多一个叹号。点击这里是我查的论坛上讨论的。
三使用JNative调用dll文件。
因为项目使用了dll文件,所以就用JNative调用。但是运行时总是报错:java.lang.IllegalStateException: JNative library not loaded, sorry !网上查后,说是JNative.jar包只能在32位系统可用,64位系统就会报错。我在一台32系统机器上确实可以。
四log日志记录。
我只是想简单实现少量记录,所以就使用自带的Logger类。这里主要的几个类或方法是:Logger.getLogger(name)、new FileHandler(path,true)、.setFormatter(new Formatter())。其中默认控制器FileHandler可以把日志记录到文本文件中。path是文件路径,第二个参数若是true,就会在原有文件中续写。如果是false会覆盖先前的记录的。
方法setFormatter是设置日志记录的格式的。日志还有日志级别知识。博客链接点击打开链接。另有一个log4j使用的博客点击打开链接。
五后来想在cmd中使用命令行打jar包。
就牵着出了jar的一些命令以及.bat文件使用的一些知识。
调出cmd界面后,输入jar -help回车就会有帮助提示,基本就明白怎么用了。如图
这里问题是:这样直接打的jar包中的/META-INF/MANIFEST.MF文件中只有两行数据如:
这样你要是想运行包中的main方法是找不到的,这个文件需要自己手动添加一些数据如:Main-Class: 主方法类名。还有其他数据博客点击打开链接。主要要注意的是,每个数据写时不要忘了冒号“:”后面要有一个空格,不然就会出现这样的错误:
。
想建一个.bat文件启动java程序。可以创建一个.bat后缀的文本文档,然后这样写:
运行jar包。
或者这样写:
运行含main的java。
bat文件知识这有个介绍的挺好的点击打开链接。