网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  jvm     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:130次  录入:管理员--2007-11-16  
 

每次我们用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中:

-------------------------

process process = system.getruntime.exec(arg1,arg2,arg3);

arg1:系统命令

arg2:命令运行的环境变量

arg3:子进程的工作目录,在这个地方就可以设置我们自己想要的工作目录,达到使用非父进程工作目下资源的方法。

-------------------------

b.jdk1.5中:

在这个版本中,我们可以使用processbuilder来新开一个jvm进程。

下面的代码可以实现这里我们的功能:

-------------------------

processbuilder pb = new processbuilder("mycommand", "myarg1", "myarg2");

// mydir就是当前进程的工作目录,如果不设置,那就是默认为父进程的工作//目录

pb.directory("mydir");

process p = pb.start();

-------------------------

java在平时跟操作系统的关系确实很少,我们都很少碰到问题,但是如果我们调用操作系统命令什么的时候,麻烦就多起来了,不过如果我们更多地了解jvm,问题就是比较容易解决了。

 
 
上一篇: 浅析数学能力对于编程工作者有很大影响    下一篇: ejb中使用hibernate的方法以及常见问题
  相关文档
设计 filesystemobject 11-16
j2ee应用系统内部的web services 11-17
sql命令:导入导出 11-17
表现层框架struts/tapestry/jsf架构比较 01-30
品味eclipse 3.1 中的新特性 11-16
java程序员必读:基础篇(7)编程中的一些共同的问题 11-17
记录一次现场“数据库迁移”的笔记 11-17
forte for java开发指南 11-16
用java实现html文件代替数据库存储数据 11-16
java中与注释有关的语法 11-17
怎样在beblogic中使用beanshell 11-16
domino.doc 学习笔记(一) 11-17
一个关于过程原码 11-17
j2ee创建多媒体管理软件解决方案 11-17
spring 2.0自定义xml 标记 (二 如何实现) 11-16
详解xml与j2ee组合技术的精髓(1) 11-16
使用j2me技术实现手机触摸屏开发的方法 11-16
sun金融行业解决方案 11-17
如何在 java 应用程序中读取 8 位和 24 位 microsoft windows .. 11-17
详细的 spring 入门实例讲解运用 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息