为java应用程序设置开机启动项 修改注册表Word格式.docx

上传人:b****0 文档编号:13184210 上传时间:2022-10-07 格式:DOCX 页数:15 大小:19KB
下载 相关 举报
为java应用程序设置开机启动项 修改注册表Word格式.docx_第1页
第1页 / 共15页
为java应用程序设置开机启动项 修改注册表Word格式.docx_第2页
第2页 / 共15页
为java应用程序设置开机启动项 修改注册表Word格式.docx_第3页
第3页 / 共15页
为java应用程序设置开机启动项 修改注册表Word格式.docx_第4页
第4页 / 共15页
为java应用程序设置开机启动项 修改注册表Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

为java应用程序设置开机启动项 修改注册表Word格式.docx

《为java应用程序设置开机启动项 修改注册表Word格式.docx》由会员分享,可在线阅读,更多相关《为java应用程序设置开机启动项 修改注册表Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

为java应用程序设置开机启动项 修改注册表Word格式.docx

(1)绝对目录,它以"

/"

为起始字符,代表从根目录下开始寻找给出的目录,如/c:

/java

(2)相对路径,它以不带“/”的目录名表示,表示以当前Java程序正在运行的目录作为起始目录来寻找给出的目录。

如java/classes。

在相对路径中,有一些特定的字符,可以代表特的的目录,比如,“.”代表当前目录,“..”代表当前目录的上一级目录。

在网上很多给出的例子中,就是利用"

."

作为目录名,构造File对象的实例,然后通过File对象的方法来获取当前程序运行的目录。

这种方法虽然简单,但有时不能正确的得出当前程序的运行目录。

原因在于,运行Java程序不一定要进入到该程序的类文件或JAR文件所在的目录,只要在运行时指定了正确的类路径信息,就可以在任何目录中运行Java程序,此时利用这种方法只能得到发出运行命令时所在的目录信息。

从上面的分析可以看出,对于很多Java程序,尤其是WEB程序,利用当前路径的“.”表示法,都不能满足要求。

那么怎样才能正确的得到运行目录信息呢?

在Web程序中,利用ServletAPI可以获得一些路径信息,比如HttpServletRequest接口中定义的getRealPath方法,但类似这些方法都依赖于Servlet环境,不便于程序的单元测试。

本文提供了一种只使用Java标准API的路径探测方法,就是利用ClassLoader抽象类。

利用java.lang.Class的getClassLoader方法,可以获得给定类的ClassLoader实例,它的getResource方法可以获得当前类装载器中的资源的位置,我们可以利用类文件的名称作为要查找的资源,经过处理后就可获得当前Java程序的运行位置信息,其伪代码如下:

获得Class参数的所在的类名

取得该类所在的包名

将包名转换为路径

利用getResource得到当前的类文件所在URL

利用URL解析出当前Java程序所在的路径

具体代码如下:

java代码:

Java代码

/**-----------------------------------------------------------------------

*getAppPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的

*Java可执行文件(jar,war)所处的系统目录名或非打包Java程序所处的目录

*@paramcls为Class类型

*@return返回值为该类所在的Java程序运行的目录

-------------------------------------------------------------------------*/

publicstaticStringgetAppPath(Classcls){

//检查用户传入的参数是否为空

if(cls==null)

thrownewjava.lang.IllegalArgumentException("

参数不能为空!

"

);

ClassLoaderloader=cls.getClassLoader();

//获得类的全名,包括包名

StringclsName=cls.getName()+"

.class"

;

//获得传入参数所在的包

Packagepack=cls.getPackage();

Stringpath="

//如果不是匿名包,将包名转化为路径

if(pack!

=null){

StringpackName=pack.getName();

//此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库

if(packName.startsWith("

java."

)||packName.startsWith("

javax."

))

不要传送系统类!

//在类的名称中,去掉包名的部分,获得类的文件名

clsName=clsName.substring(packName.length()+1);

//判定包名是否是简单包名,如果是,则直接将包名转换为路径,

if(packName.indexOf("

)&

lt;

0)path=packName+"

else{//否则按照包名的组成部分,将包名转换为路径

intstart=0,end=0;

end=packName.indexOf("

while(end!

=-1){

path=path+packName.substring(start,end)+"

start=end+1;

start);

}

path=path+packName.substring(start)+"

//调用ClassLoader的getResource方法,传入包含路径信息的类文件名

.URLurl=loader.getResource(path+clsName);

//从URL对象中获取路径信息

StringrealPath=url.getPath();

//去掉路径信息中的协议名"

file:

intpos=realPath.indexOf("

if(pos&

gt;

-1)realPath=realPath.substring(pos+5);

//去掉路径信息最后包含类文件信息的部分,得到类所在的路径

pos=realPath.indexOf(path+clsName);

realPath=realPath.substring(0,pos-1);

//如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名

if(realPath.endsWith("

!

realPath=realPath.substring(0,realPath.lastIndexOf("

));

/*------------------------------------------------------------

ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径

中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要

的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的

中文及空格路径

-------------------------------------------------------------*/

try{

realPath=.URLDecoder.decode(realPath,"

utf-8"

}catch(Exceptione){thrownewRuntimeException(e);

returnrealPath;

}//getAppPath定义结束

//-----------------------------------------------------------------

 

[java]viewplaincopyprint?

-1)realPath

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1