`

获得运行jar包存放路径的方法

阅读更多
获得运行jar包存放路径的方法
在 java 中, System.getProperty("user.dir") 得到的是当前工作路径(对应命令行命令就是 linux 下的 pwd 、 windows 下的 cd ),而 System.getProperty("user.home") 得到的是当前用户主目录(对应于 linux 下的 ~ 目录、 windows 下的 document and settings\username );但如果你想得到所运行的 java 程序所在的路径,似乎并没有什么简单的方法。
  比如说,有一个 pathTest.jar 包放在 D:\zeal\webdev 下,这个 jar 执行的时候需要在当前目录下读写一个 test.log 文件。如果不采用绝对路径来读写 test.log 的话,不同的 jar 运行方式会带来不同的结果:

cd D:\zeal\webdev
java -jar pathTest.jar
           ( test.log 将生成在 D:\zeal\webdev 目录下 )

cd E:\sun\jre\bin
java -jar D:\zeal\webdev\pathTest.jar
           ( test.lgo 将生成在 E:\sun\jre\bin 目录下 )

  这势必造成潜在的运行错误。解决的方法是必须在程序中指定 test.log 文件的绝对路径。从本意上来讲,这里我们希望 test.log 与 pathTest.jar 位于相同的路径之下。但显然无论是 "user.dir" 还是 "user.home" 都不会返回正确的结果。

  幸好, java 允许我们定位某个 class 的 CodeSource , 通过 CodeSource 提供的 Location 信息就能够找到相关的文件路径。假设 pathTest.jar 的 main class 是 pathTest ,通过

new pathTest().getClass().getProtectionDomain().getCodeSource().getLocation();


  就可以得到 pathTest.jar 的完整路径( file:/D:/zeal/webdev/pathTest.jar ),接下来怎么做就简单了。当然,实际应用中一般我们会选择把所有与jar相关的资源文件一起打包进去,或者使用 "user.home" 这样的固定位置来存放;除非在特殊情况下才会需要通过这个迂回的方式来获取相关的路径信息。
分享到:
评论

相关推荐

    微博API JAR包

    对于Java开发环境,如Eclipse或IntelliJ IDEA,你可以通过"构建路径"或"项目设置"将JAR包添加到项目的类路径中,这样你的代码就能访问到其中的类和方法。此外,描述中提到的`config.properties`文件是配置文件,通常...

    jtds-1.3.1.jar包, kettle连接

    标题中的“jtds-1.3.1.jar包,kettle连接”指的是在Kettle数据集成工具中,为了能够连接到SQL Server数据库,需要使用名为jtds的Java数据库连接器(JDBC驱动),其具体版本为1.3.1。jtds是一个开源的JDBC驱动程序,...

    Spoon mysql数据库jar包。

    `lib`目录是Spoon存放依赖库的地方,将驱动放在这里,意味着Spoon启动时会自动将其加入到类路径中。 3. **配置数据库连接**:在Spoon中,你需要创建一个新的数据库连接,选择“MySQL”作为数据库类型,并输入正确的...

    idea如何导入jar包,看看这个你就明白了

    5. **配置构建路径**:导入jar包后,IDEA会自动将其添加到项目的构建路径中。在`Project Structure`(可通过`File` -> `Project Structure`访问)中,你可以检查`Libraries`部分,确保jar包已列出。 6. **使用jar包...

    Java在制作jar包时引用第三方jar包的方法

    当我们在命令行执行JAR包时,如果缺少Main-Class属性,则会报错提示“没有主清单属性”。如果指定错误,比如类名写错,或者没有写成全路径形式,也会导致程序无法找到入口类而报错。例如,如果类名为...

    使用批处理一键安装jar包为服务

    在IT行业中,有时候我们...通过以上步骤,你可以使用批处理文件和winsw工具轻松地将jar包安装为Windows服务,并通过计划任务实现守护,确保服务的稳定运行。这个方法特别适用于那些需要在服务器上持续运行的Java应用。

    FTP上传文件需要的jar

    3. **关联项目**:在IDE(如Eclipse、IntelliJ IDEA)中,你需要将这些jar包添加到项目的构建路径中。这可以通过右键点击项目 -> "Build Path" -> "Configure Build Path" -> "Libraries" -> "Add JARs..." 或 "Add ...

    druid.1.1.10.jar.rar

    在标题中提到的"druid.1.1.10.jar"是该组件的特定版本,即1.1.10版本的jar包。这个版本的发布旨在提供稳定性和性能优化,同时也可能包含一些新功能或者对旧有特性的改进。 Druid数据库连接池是Java应用程序中用于...

    使用 Inno Setup 进行 Jar 包转 EXE 一键安装部署教程

    2. **选择存放路径**:指定项目存放的位置。 3. **进入配置界面**:根据提示进入配置界面。 4. **选择 jar 转换 exe 模式**:在配置界面中选择将 jar 文件转换为 exe 文件的模式。 5. **自定义名字和选择输出路径**...

    将下载好的jar包导入到本地maven仓库中操作

    5. 执行上述命令后,maven会在本地仓库中创建相应的目录结构,并将jar包存放到相应的位置。此时,该jar包就可以被本地的maven项目所识别和使用了。 除了上述导入操作,文档中还简要介绍了Maven的一些基础命令及其...

    ojdbc14-10.2.0.3.0.jar

    其中,`project.basedir`变量指的是项目的根目录,`lib`是存放本地jar文件的目录,具体路径根据实际情况调整。 3. 在构建项目时,Maven会查找并使用这个本地定义的依赖,而不是尝试从远程仓库下载。 此外,使用...

    xyz.erupt相关jar.zip

    在Java项目中,"lib"目录下存放的是外部库的JAR文件,这些文件在运行或构建项目时会被引用。开发者通常会把这些库添加到类路径(Classpath)中,以便程序能够正确地访问并使用它们的功能。 关于xyz.erupt框架,我们...

    哈工大ltp工具Java接口动态链接库(32位)包含jar包

    至于【压缩包子文件的文件名称列表】中只列出了"libs",这很可能是一个目录名,通常在Java项目中,"libs"目录用于存放依赖库和外部JAR文件。在这个案例中,它可能包含了实现LTP Java接口的JAR文件和其他必要的库,如...

    利用exe4j打包java项目

    3. **指定jar文件位置**:选择好存放jar文件的路径,并继续下一步。 4. **配置打包设置**:根据需要调整打包设置,例如是否包含源代码、Javadoc等,然后继续。 5. **选择主类**:在“Main Class”字段中选择项目...

    ant-jakarta-regexp.jar.zip

    这里的"path/to/ant-jakarta-regexp.jar"应替换为你实际存放JAR文件的路径。 加载了扩展库后,你就可以在Ant任务中使用Jakarta Regexp的功能。例如,你可以创建一个自定义的任务,使用正则表达式处理文件或目录。...

    aduna-commons-iteration-2.2.jar.zip

    这个JAR文件是Java平台上的一个可执行文件格式,通常用于封装多个Java类和资源文件,便于分发和运行。它属于Aduna Commons Iteration库的版本2.2。 Aduna Commons Iteration是Aduna组织开发的一个开源项目,这个...

    eclipse 安装包

    5. **构建路径**:在Eclipse的项目设置中,你可以管理这些jar包的构建路径,确保编译器能够正确识别并使用它们。 为了更好地使用Eclipse,你还需要了解如何配置JRE(Java Runtime Environment)、如何创建和管理...

    processing-1.5.1.rar

    在Eclipse中使用Processing JAR包,首先你需要将"processing-core.jar"(通常包含在Processing的lib目录下)添加到你的项目构建路径中。这可以通过右键点击项目 -> "属性" -> "Java构建路径" -> "库" -> "添加外部...

    ant-apt.jar.zip

    通过设置特定属性,如`generatedSourceDir`,可以指定处理结果的存放路径。 2. `classpath`元素:在Ant-APT中,需要包含APT相关的类库,如`com.sun.tools.apt.Main`,以及自定义的注解处理器。这些类库需要被添加到...

Global site tag (gtag.js) - Google Analytics