`
kinganpo
  • 浏览: 51301 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

动态获取打包Jar后的路径信息

    博客分类:
  • java
阅读更多
做了几个小软件需要用到打包后jar的路径,找了些日子终于到了可行方法...
下面专门封装了一个类来处理:
import java.io.File;
/**
 * 获取打包后jar的路径信息
 * @author Administrator
 *	2011-01-16 13:53:12
 */
public class JarTool {
	//获取jar绝对路径
	public static String getJarPath(){
		File file = getFile();
		if(file==null)return null;
		 return file.getAbsolutePath();
	}
	//获取jar目录
	public static String getJarDir() {
		File file = getFile();
		if(file==null)return null;
	     return getFile().getParent();
	}
	//获取jar包名
	public static String getJarName() {
		File file = getFile();
		if(file==null)return null;
		return getFile().getName();
	}

	private static File getFile() {
		//关键是这行...
		String path = JarTool.class.getProtectionDomain().getCodeSource()
				.getLocation().getFile();
        try{
            path = java.net.URLDecoder.decode(path, "UTF-8");//转换处理中文及空格
        }catch (java.io.UnsupportedEncodingException e){
            return null;
        }
		return new File(path);
	}
	
}

必须要打包成jar后才能正确获取相关路径信息,下面写了个测试类:
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TestFrame extends JFrame{
	public TestFrame() {
		JTextArea ta = new JTextArea();
		ta.setEditable(false);
		ta.append("name: "+JarTool.getJarName()+"\n");
		ta.append("dir: "+JarTool.getJarDir()+"\n");
		ta.append("path: "+JarTool.getJarPath()+"\n");
		add(ta);
		pack();
		setTitle("动态获取Jar路径信息");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public static void main(String[] args) {
		new TestFrame();
	}
}

将上面一起打包成path.jar后放到桌面运行结果:

无论path.jar放到任何地方都能得到正确的路径信息 (*^__^*) 嘻嘻……
主要靠下面两行代码实现
class.getProtectionDomain().getCodeSource().getLocation().getFile();这行作用是获取当前的绝对路径信息
java.net.URLDecoder.decode(path, "UTF-8");此行是将path中的空格和中文“乱码”转换正确回显
对此可以为自己做的软件“注册”随系统开机启动了...
  • 大小: 9.4 KB
16
6
分享到:
评论
5 楼 人生难得糊涂 2014-07-29  
感谢!!
4 楼 baochunyu 2011-02-11  
以前也碰到过这种问题,看后自己囧个
3 楼 kinganpo 2011-01-27  
fan2012 写道
你的关键代码改为
String path = JarTool.class.getResource("/").getFile();
也可以

打包jar后能否正确获取路径呢?
2 楼 fan2012 2011-01-27  
你的关键代码改为
String path = JarTool.class.getResource("/").getFile();
也可以
1 楼 raveh 2011-01-25  
**收**藏**

相关推荐

    Java带图片项目打包Jar

    当项目被打包成Jar文件后,该目录结构发生了变化,不再符合原来的路径规则。 2. **类加载器的问题**:在Java中,资源文件是通过类加载器来加载的。不同环境下(如开发环境与运行环境)类加载器的搜索路径可能不同...

    解决java打包之后无法加载静态资源的问题SWTResourceManager.java源码

    利用swt中的一个获取图片的类...打成jar包后,获取图片的路径中有"xxx.jar!"这里面的内容是不能够被操作系统识别出来的,因此直接通过路径来获取文件是不可能,使用SWTResourceManager可实现这一功能。

    exe4j打包(包含第三方jar包)

    【标题】:exe4j打包(包含第三方jar包) 在Java开发中,将项目打包成可执行文件(如.exe)对于非Java环境的用户来说是非常方便的。exe4j是一款强大的工具,它允许我们将Java应用转换为Windows平台下的可执行程序,...

    eclipse Fatjar 打包 jar包

    标题 "eclipse Fatjar 打包 jar包" 涉及的是在Eclipse环境中使用Fatjar插件将Java项目打包成一个包含所有依赖的可执行jar文件的过程。这个方法允许开发者将所有必要的库和资源整合到一个单一的jar中,方便分发和运行...

    Eclipse打包成JAR包读取外部JAR包和外部配置文件(源码)

    总结,打包JAR包并在其中读取外部JAR和配置文件,需要理解Java类路径的概念,熟练运用Eclipse的打包功能,以及正确处理MANIFEST.MF文件。同时,掌握使用构建工具如Maven或Gradle会大大提高效率。在实际项目中,确保...

    ant自动获取文件路径

    在Ant中,我们可以方便地定义任务,包括编译、打包、测试等,而获取文件路径是其中一项基本操作。 在Ant的构建文件(通常命名为build.xml)中,我们使用各种标签来指定和操作文件路径。`<property>`标签用于设置和...

    android studio 打包.jar到unity调用 unity工程

    在Unity游戏开发中,有时需要使用到Android原生代码,比如访问硬件设备、处理复杂的算法或是...如果在打包或调用过程中遇到问题,可以检查文件路径、命名空间、方法签名是否正确,或者联系提供.JAR文件的人获取帮助。

    打包第三方Jar插件

    总之,"打包第三方Jar插件"涉及Java项目中依赖管理、构建路径设置、类加载机制、项目打包等多个方面。通过理解并熟练运用这些知识点,可以提高开发效率,减少错误,保证项目的稳定性和可维护性。在实际操作中,结合...

    Eclipse打包工具FATJAR

    2. **创建Fat JAR**:安装完成后,右键点击项目 -> Export -> Runnable JAR file,在弹出的向导中选择"Package required libraries into generated JAR"选项,这将把所有依赖的库打包进JAR。 3. **配置Main-Class**...

    java打包工具fatjar插件(官网0.0.31版本)

    而使用Fatjar,开发者可以轻松地将所有依赖整合进一个单独的JAR,这样只需运行这个打包后的JAR,就能直接执行程序,简化了部署流程。 Fatjar的使用步骤大致如下: 1. 下载:首先需要下载Fatjar插件,官方版本为...

    Java获取ipa、apk文件配置信息jar包

    使用这个库,开发者只需传入ipa或apk的路径,就能方便地获取到所需的配置信息,大大简化了处理流程。这在自动化测试、版本管理系统或者数据分析场景下非常有用。 在实际使用时,需要注意以下几点: 1. 操作文件时要...

    动态加载jar包

    在动态加载jar包后,我们可能需要调用其中的特定函数。这可以通过`java.lang.reflect`包中的类来实现。首先,使用`Class.forName()`加载类,然后通过`Class`对象的`getDeclaredMethods()`获取类的所有方法,最后使用...

    j2ewiz jar打包exe

    2. **创建配置文件**:使用j2ewiz提供的图形用户界面(GUI),输入你的jar文件路径,设置主类(程序入口点),以及可能需要的其他参数,如图标、版权信息等。 3. **选择嵌入JRE**:j2ewiz允许你选择是否要包含一个...

    springboot工程jar包加密

    当一个项目被打包成jar文件后,这通常意味着它可以作为一个独立的应用程序运行。然而,随着项目的部署和分发,保护源代码和敏感信息的安全变得至关重要。"springboot工程jar包加密"这个话题就是关于如何确保Spring ...

    java动态编译指定java文件且将java文件生成jar

    在Java编程中,有时我们需要在运行时动态地编译源代码文件,并将其打包成可执行的JAR(Java Archive)文件。这样的需求通常出现在我们希望根据用户输入或特定条件生成并执行新的代码逻辑时。本教程将深入讲解如何...

    最方便的Eclipse打包JAR插件

    "最方便的Eclipse打包JAR插件"是指Eclipse中的一款插件,它简化了这一过程,使得开发者可以更轻松地创建包含所有依赖的独立JAR文件。 这款插件名为FatJar,它解决了Eclipse标准构建过程中可能遇到的问题,即当项目...

    Spring Boot项目打成jar包后,下载resources目录下文件为空的demo

    - **正确设置路径**:在获取或下载资源时,应使用`ClasspathResource`或`ResourceLoader`来获取正确的类路径资源。例如: ```java Resource resource = new ClassPathResource("static/filename.ext"); ``` - *...

    java_jar打包_合并打包示例.rar

    打包完成后,可以使用以下命令运行JAR文件: ``` java -jar myApp.jar ``` 如果JAR文件包含数据库相关资源,程序启动时应正确加载这些资源,例如通过Class.getResource()或ClassLoader.getResource()方法获取。 ...

    java学习之jar打包详解

    当Java虚拟机加载JAR时,会先读取MANIFEST.MF文件获取类路径信息,然后使用索引来快速定位所需类,避免逐一扫描所有文件。这对于大型项目尤其重要,能够显著提升程序启动速度。 在实际开发中,我们还会遇到一些高级...

Global site tag (gtag.js) - Google Analytics