|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
每次我们用Java命令运转我们的Java程序,城市在JVM中开启一个历程,关于每个历程,城市有一个绝对应的事情目次,这个事情目次在假造机初始化的时分就已设置好了,默许的情形下,事情目次是我们工程的根目次,好比:
/home/test/Project-
--bin
--divinemind.onlyfun.test.helloworld.java
--src
假设我们在用上面的命令启动helloworld,那末这个历程的根目次就是/home/test/Project/bin,helloworld里举行操纵必要的资本,好比文件甚么的,城市在这个目次举行查找。
在Windows下,情形也是不异的。
我们能够经由过程
---------------------
System.getProperty(“user.dir”);
----------------------
获得以后历程的事情目次,并且当我们想改动这个事情目次的时分,也能够经由过程
---------------------
System.setProperty(“user.dir”,”/home/test/xxxxxxx”);
---------------------
设置以后历程的事情目次,可是,现实上,user.dir这个体系情况是不成以从头设置的,成绩良多,最多见的成绩,以后历程下的一切线程都在利用这个情况变量,假如修正的话,伤害不可思议,Sun的JDK如许做估量是一个小BUG.以是,System.setProperty这个办法只是让我们看看,实践上没有感化。在Sun的JDK1.4中,以后历程的事情目次是没有举措修正的,在JDK1.5中,ProcessBuilder在这方面有所改善。
当我们没有选择必要利用非事情目次下的资本的时分,好比:Java挪用A,A利用B,B和A在统一个目次下,A和B不在以后历程的事情目次下,如许的话,程序一定运转会有成绩,这个时分有两个举措能够办理
1.一切的路径都写相对路径
一切的路径写相对路径能够完成,可是程序在部署的时分贫苦十分多,保护也坚苦,可是办法复杂,直不雅。
2.在以后历程中新开一个子历程,修正子历程的事情目次
在Java中新开一个子历程的办法跟JDK版本有关:
A.JDK1.4中:
-------------------------
Processprocess=System.getRuntime.exec(arg1,arg2,arg3);
arg1:体系命令
arg2:命令运转的情况变量
arg3:子历程的事情目次,在这个中央就能够设置我们本人想要的事情目次,到达利用非父历程事情面前目今资本的办法。
-------------------------
B.JDK1.5中:
在这个版本中,我们可使用ProcessBuilder来新开一个JVM历程。
上面的代码能够完成这里我们的功效:
-------------------------
ProcessBuilderpb=newProcessBuilder("myCommand","myArg1","myArg2");
//myDir就是以后历程的事情目次,假如不设置,那就是默许为父历程的事情//目次
pb.directory("myDir");
Processp=pb.start();
-------------------------
Java在平常跟操纵体系的干系的确很少,我们都很少碰着成绩,可是假如我们挪用操纵体系命令甚么的时分,贫苦就多起来了,不外假如我们更多地懂得JVM,成绩就是对照简单办理了。
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。 |
|