一、使用cmd编译并运行java程序
今天帮朋友做一件事,他是一个不懂技术的人,说需要一个工具来做数据筛选,没有什么学识的我只想到了使用java程序来实现,于是上去就是一通abcd,玩笑归玩笑,做完了以后,发现用着还可以,于是想写一篇文章记录一下在使用cmd命令编译java程序的时候遇到的一些问题。
首先给了一个数据样本:
丨哈】【C 2-9 14:09:44 大(4321432432)哈丨哈丨哈丨哈】 【A 2-9 14:09:44 小(1232)哈丨哈丨哈丨哈】【B 2-9 14:09:44 打(123232)哈丨哈丨哈丨哈】【C 2-9 14:09:44 大(4321432432)哈丨哈丨哈丨哈】
需要采集括号里面连续的数据,于是想使用字符串截取的方式来将所有的连续数字给截取出来,然后放到一个StringBuffer里面,然后再写入到一个文件里。
代码:
package test;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.util.Arrays;/***author:bingbing*日期:2月9日*时间:下午2:20:32*/public class test {public static void main(String[]args) throws IOException {File file=new File("D:\\数据.txt");if(file.exists()) {FileInputStream fis=new FileInputStream(file);InputStreamReader isr=new InputStreamReader(fis,"utf-8");BufferedReader br=new BufferedReader(isr);String str="";while(br.read()!=-1) {str=br.readLine();}System.out.println(str);StringBuffer sb=new StringBuffer();int index=0;while(index<=str.length()) {//实现原理: 通过一个游标index,来将连续数字的左括号和右括号定位出来,找到一个后就截取//出来,放到StringBuilder里面,然后将游标后移,移到的位置为上一次截取到的右括号的位置。int start= str.indexOf('(',index); int end=str.indexOf(')',index);if(start!=-1 && end !=-1) {String temp=str.substring(start+1, end);sb.append(temp+";");index=end+1;}else {break;}}System.out.println("截取到的字符串为:"+sb.toString());FileOutputStream fos=new FileOutputStream(new File("D:\\结果.txt"));OutputStreamWriter osw=new OutputStreamWriter(fos,"utf-8");BufferedWriter bw=new BufferedWriter(osw);bw.write(sb.toString());System.out.println("写入文件完毕!"); br.close();bw.close();}else {file.createNewFile();}}}
数据放到D盘的根目录,然后将数据读取出来,操作完之后再放进去。
编译成功,输出到想要的结果
但对于一个不懂技术的人来说,这样是远远不够的,为了方便后面继续使用,于是我想到了使用cmd命令来执行程序,一件命令,执行成功后,得到数据结果。
使用cmd命令来编译并运行java程序:
1) 类带包的话,需要注意的是,在它的上一级目录编译好后,新建一个test文件夹,把java文件和class文件放入到test文件夹里面去,然后返回上一级目录,运行。
运行的命令为: java test.test
2) 在使用javac编译的时候,出现乱码,解决方法如下
使用如下命令: javac -encoding utf-8 test.java
编译成功后,在同级目录下会生成.class文件!
3) 编译完成后,使用java 命令运行程序,运行成功后,将命令放到.bat文件里,一键执行。
.bat文件里面的命令如下:
cd d:
d:
java test.test
二、使用cmd命令在编译的时候打入其他jar包
最近由于需要,用java代码写了一个word替换工具,
PS D:\替换工具\源代码\com\example\file> javac -cp d://替换工具//spire//Spire.Doc.jar -encoding utf-8 ReplaceWordContent.java
PS D:\替换工具\源代码\com\example\file> javac -cp d://替换工具//spire//Spire.Doc.jar -encoding utf-8 ReplaceWordContent.java
PS D:\替换工具\源代码\com\example\file>
编译完成后,执行:
java ReplaceWordContent
发现spire的jar包并没有引入。
修改命令:
java -cp .;d:\\替换工具\\spire\\Spire.Doc.jar ReplaceWordContent
完整路径如下:
PS D:\替换工具\源代码\com\example\file> java -cp .;d:\\替换工具\\spire\\Spire.Doc.jar? ReplaceWordContent
发现成功了!
切换到工具目录再执行:
D:\替换工具\源代码>java -cp .;d:\\替换工具\\spire\\Spire.Doc.jar com.example.file.ReplaceWordContent
三、将命令写入到.bat文件里
写完后,发现不太好用,对于不懂程序的人来说,还需要提升一下用户体验,不可能让他们把代码放到程序里,再执行一下,我们可以用更便捷的方式来让程序在windows环境下实现一键执行,因此把所有的命令可以放到批处理文件里,然后实现一键执行编译好的字节码文件,这样就能够让不懂代码的人也能够使用该功能 !
所有的命令行如下:
cd D:\替换工具\源代码\com\example\file
d:
javac -cp d://替换工具//spire//Spire.Doc.jar -encoding utf-8 ReplaceWordContent.java
cd D:\替换工具\源代码
java -cp .;d:\\替换工具\\spire\\Spire.Doc.jar com.example.file.ReplaceWordContent
路径中有中文,在执行的时候惊奇的发现有中文乱码问题!
解决方式,在notepad++里修改编码为ANSI:
重新一键运行, start.bat文件,中文乱码问题解决: