javawindows程序
Ⅰ 如何用java启动windows命令行程序
先请编译和运行下面程序:
import java.util.*;
import java.io.*;
public class BadExecJavac2
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
我们知道javac命令,当不带参数运行javac
程序时,它将输出帮助说明,为什么上面程序不产生任何输出并挂起,永不完成呢?java文档上说,由于有些本地平台为标准输入和输出流所提供的缓冲区大小
有限,如果不能及时写入子进程的输入流或者读取子进程的输出流,可能导致子进程阻塞,甚至陷入死锁。所以,上面的程序应改写为:
import java.util.*;
import java.io.*;
public class MediocreExecJavac
{
public static void main(String args[])
{
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
下面是正确的输出:
D:\java>java MediocreExecJavac
Usage: javac <options>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath Specify where to find user class files
-cp Specify where to find user class files
-sourcepath Specify where to find input source files
-bootclasspath Override location of bootstrap class files
-extdirs Override location of installed extensions
-endorseddirs Override location of endorsed standards path
-d Specify where to place generated class files
-encoding Specify character encoding used by source files
-source Provide source compatibility with specified release
-target Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-X Print a synopsis of nonstandard options
-J Pass directly to the runtime system
Process exitValue: 2
D:\java>
下面是一个更一般的程序,它用两个线程同步清空标准错误流和标准输出流,并能根据你所使用的windows操作系统选择windows命令解释器command.com或cmd.exe,然后执行你提供的命令。
import java.util.*;
import java.io.*;
class StreamGobbler extends Thread
{
InputStream is;
String type; //输出流的类型ERROR或OUTPUT
StreamGobbler(InputStream is, String type)
{
this.is = is;
this.type = type;
}
public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
{
System.out.println(type + ">" + line);
System.out.flush();
}
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
public class GoodWindowsExec
{
public static void main(String args[])
{
if (args.length < 1)
{
System.out.println("USAGE: java GoodWindowsExec ");
System.exit(1);
}
try
{
String osName = System.getProperty("os.name" );
System.out.println("osName: " + osName);
String[] cmd = new String[3];
if(osName.equals("Windows XP") ||osName.equals("Windows 2000"))
{
cmd[0] = "cmd.exe" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
}
else if( osName.equals( "Windows 98" ) )
{
cmd[0] = "command.com" ;
cmd[1] = "/C" ;
cmd[2] = args[0];
}
Runtime rt = Runtime.getRuntime();
System.out.println("Execing " + cmd[0] + " " + cmd[1]+ " " + cmd[2]);
Process proc = rt.exec(cmd);
// any error message?
StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), "ERROR");
// any output?
StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
// any error???
int exitVal = proc.waitFor();
System.out.println("ExitValue: " + exitVal);
} catch (Throwable t){
t.printStackTrace();
}
}
}
下面是一个测试结果:
D:\java>java GoodWindowsExec " Test.java Test1.java"
osName: Windows XP
Execing cmd.exe /C Test.java Test1.java
OUTPUT>已复制 1 个文件。
ExitValue: 0
D:\java>
下面的测试都能通过(windows xp+jdk1.5)
D:\java>java GoodWindowsExec dir
D:\java>java GoodWindowsExec Test.java
D:\java>java GoodWindowsExec regedit.exe
D:\java>java GoodWindowsExec NOTEPAD.EXE
D:\java>java GoodWindowsExec first.ppt
D:\java>java GoodWindowsExec second.doc
function TempSave(ElementID)
{
CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
CommentsPersistDiv.save("CommentXMLStore");
}
function Restore(ElementID)
{
CommentsPersistDiv.load("CommentXMLStore");
document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
}
Ⅱ java的程序在windows能运行吗
JAVA的代码都是在JVM中运行的,依赖运行环境但并不依赖操作系统。windows只要安装JRE就可以运行JAVA程序。
Ⅲ 为什么用java开发windows桌面程序那么麻烦
为了兼容,导致java的桌面框架要跨平台。也就是说一套代码windows,linux,mac都能用。而桌面程序是依赖于底层的系统框架的。各有特色,如果要兼容,只能拿公共属性出来。这样导致整个系统非常不好用。
Ⅳ 如何把一个Java程序做成Windows服务
1、下载wrapper-windows-x86-32系列的工具包,解压缩为<wrapper-home>。
2、新建一个目录,例如:C:\MyServerApp,并在其下面创建五个文件夹
分别为:
bin 可执行程序文件夹
conf 配置文件夹
lib wrapper自身的jar包文件夹
logs 日志文件夹包
application 新建一个class用于存放应用程序的class文件, 此包下还新建一个lib 用于存放应用程序所需要的 jar包。
3、将<wrapper-home>\src\bin 中的App.bat.in,InstallApp-NT.bat.in,UninstallApp-NT.bat.in等文件
与<wrapper-home>\bin 下的wrapper.exe复制到bin 目录下,并且将App.bat.in,InstallApp-NT.bat.in,
UninstallApp-NT.bat.in等的后缀.in去掉。
将<wrapper-home>\src\conf 下的wrapper.conf文件和<wrapper-home>\conf 下的wrapper-license复制到conf目录下,wrapper-license文件一定不能少
将<wrapper-home>\lib 下的wrapper.jar,wrappertest.jar和wrapper.dll文件复制到lib目录下
最终的包结构可以是这样子的:
C:\MyServerApp
|-bin
|-App.bat
|-InstallApp-NT.bat
|-UninstallApp-NT.bat
|-wrapper.exe
|-lib
|-wrapper.jar 必须要的
|-wrappertest.jar
|-wrapper.dll
|-conf
|-wrapper.conf
|-wrapper-license
|-logs
|-wrapper.log
|-application
|-lib 应用程序中如果用到了jar包,那么就复制到此文件夹里
|-class 用来存放应用程序(一般应用程序是有包结构的,就把工程里面的bin目录下的.class文件连同包一起拷过来)
4、配置Wrapper工具的wrapper.conf配置文件
配置Java 虚拟机的位置
wrapper.java .command=C:\Program Files\Java \jdk1.6.0_07\bin\java
配置wrapper的主类,如果用他的代理方式,就填org.tanukisoftware.wrapper.WrapperSimpleApp
wrapper.java .mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
工具寻找jar包以及应用程序的路径
wrapper.java .classpath.1=../lib/wrappertest.jar
wrapper.java .classpath.2=../lib/wrapper.jar
wrapper.java .classpath.3=../lib/wrapper.dll
应用程序连同其文件夹一起拷到application文件夹下了,所以路径只需要指定到../application/
wrapper.java .classpath.4=../application/class
应用程序要用到的所有jar包
wrapper.java .classpath.5=../application/lib/*.jar
wrapper.java .library.path.1=../lib
wrapper.java .additional.1=-Dprograme.name=run.bat
要将哪一个应用程序做成服务,就要把他的主函数所在的类名 写在这里
wrapper.app.parameter.1=com.luke.service.server.TcpServer
wrapper.console.format=PM
wrapper.console.loglevel=INFO
指定日志记录的地方
wrapper.logfile=../logs/wrapper.log
wrapper.logfile.format=LPTM
wrapper.logfile.loglevel=INFO
wrapper.logfile.maxsize=0
wrapper.logfile.maxfiles=0
wrapper.syslog.loglevel=NONE
wrapper.console.title=Wrapper Application
wrapper.ntservice.name=@wrapper @
wrapper.ntservice.displayname=@WrapperApplication @
wrapper.ntservice.description=@WrapperDescription @
wrapper.ntservice.dependency.1=
wrapper.ntservice.starttype=AUTO_START
wrapper.ntservice.interactive=false
5、运行cmd
cd c:\MyServerApp\bin
App.bat测试不会将把你的应用(此处为server)安装到Win32系统服务中
InstallApp.bat安装 后才将把你的应用(此处为server)安装到Win32系统服务中
Ⅳ 怎么才能在Windows系统里面运行Java程序
要编译JAVA程序 要安装 开发环境(JDK)和编译环境(编译工具)下面是jdk的配置: 1、jdk及JDK API Doc J2SDK 1.4.0 下载地址file://Pingserver/share/DevelopSoft/Java/J2SDK J2SDK-1_4_0-doc 下载地址file://Pingserver/share/DevelopSoft/Java/J2SDK 建议把doc解压缩到c:\j2sdk1.4.0\docs目录下 2、配置环境变量 安装了jdk以后,要配置环境变量 我的电脑->属性->高级->环境变量 添加以下环境变量(假定你的java安装在c:\j2sdk1.4.0) java_home=c:\j2sdk1.4.0 classpath=.;c:\j2sdk1.4.0\lib\dt.jar;c:\j2sdk1.4.0\lib\tools.jar;(.;一定不能少,因为它代表当前路径) path = c:\j2sdk1.4.0\bin 新开一个命令提示符窗口,(开始-程序-运行-CMD)键入java和javac测试一下 如果出现一堆关于JDK的详细信息说明安装成功。2.下载编译工具推荐eclipse下载地址: http://wlzx.zzuli.e.cn/download/eclipse.rar
Ⅵ 如何下载适用于Windows的Java程序
目前Java已经逐渐被其它更优越的系统取代了,但是仍然有一些网页需要稳定的运行插件的环境需要安装适应于Windows的Java程序,雷锋崔老师今天就来教授大家如何下载Java。
进入Java的官网网站,找到下载Java的选项。目前Java的下载都是免费的,用户注意下载正版的Java。
另外,用户不必担心能否选择到适应于自己台式机的Java为Java软件提供一个适合的运行环境,Java的官方会为你配置好的。
点击上图的“免费Java下载”后,系统会为你选择适用于Windows的Java软件。系统默认的是最新版本,大小约为897KB。下载完成的非常快速
下载完成后,因为用户使用的是浏览器下载一般不是很好找到下载的文件的位置,雷锋崔老师就演示一下如何找到浏览器的下载文件。以某歌浏览器为例。
浏览器界面右上角三条横线的控制选项,左击。
这个控制选项就在网址框的最右边,左击后出现选项。选择其中的“下载内容”选项。用户就可以看到自己刚刚和以前通过该浏览器下载过的文件了。
在浏览器的下载内容界面中选择刚刚我们下载的Java,左击一下。
出现运行前的安全警告,正常提示,不要理会,点击运行。
准备安装Java
点击运行后,系统进入“Java安装”程序,界面显示“欢迎使用Java”,其实还需要很长的安装等待。
用户选择更改目标文件夹,之后再点击安装
下载安装程序
Java的下载速度非常快,因为文件本身就不大。但是其下载安装程序的时间真的是让人等的着急。需要20分钟以上的时间,用户耐心的等待吧。
下载安装程序后系统提示选择Java的目标文件夹,因为刚刚在准备安装时,我们已经选择了更改目标文件夹才会有这样的提示。现在选择一个空闲的非系统盘来进行下载吧。
最后一步:启动Java
在完成所有的医生操作后,系统会提示关闭正在使用Java的程序,用户点击“关闭程序并继续”即可启动Java了。