`
davidxiaozhi
  • 浏览: 241552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中获取路劲的几种方法

阅读更多

//当前的classpath   

System.out.println(Thread.currentThread().getContextClassLoader().getResource("./").getPath()); 
//Test.class文件所在路径 即包路径
System.out.println(Test.class.getResource(""));

1. 在Servlet\Filter等Servlet web环境中,只要获得javax.servlet.ServletContext类型,则可以通过 getRealPath("...") 获得路径。相对路径中最顶层目录可通过参数“"/"”获取。
request.getSession().getServletContext().getRealPath("/");

2. JSP自定义标签javax.servlet.jsp.tagext.TagSupport
((javax.servlet.ServletContext)pageContext).getRealPath("");

3. 普通Java Class对象文件中使用:
this.getClass().getResource("???");
如果Class文件在顶层目录(包)中,且“???”为空白字符串(“""”),及此方法在jar文件中执行则会返回null。在顶层目录(包)以下的各层目录(包)则会返回包含协议的URL。各层文件夹(包)之间使用“/”分隔。

项目位置:C:\project 目录。

文件位置:C:\project\Test.java
文件内容:
/* source begin. */
public class Test {

 public Test () {
  System.out.println(this.getClass().getResource(""));
  System.out.println(this.getClass().getResource("."));
  System.out.println(this.getClass().getResource("/"));
  System.out.println(this.getClass().getResource("Test.class"));
  System.out.println(this.getClass().getResource("/Test.class"));
  System.out.println(this.getClass().getResource("./Test.class"));
  System.out.println(this.getClass().getResource("com/Test.class"));
  System.out.println(this.getClass().getResource("/com/Test.class"));
  System.out.println(this.getClass().getResource("./com/Test.class"));
 }
 
 public static void main(String[] args) {
  System.out.println("====== Test.class ======");
  Test test = new Test();
  System.out.println("====== com/Test.class ======");
  com.Test com_test = new com.Test();
 }
}
/* source end. */


文件位置:C:\project\com\Test.java
文件内容:
/* source begin. */
package com;
public class Test {

 public Test () {
  System.out.println(this.getClass().getResource(""));
  System.out.println(this.getClass().getResource("."));
  System.out.println(this.getClass().getResource("/"));
  System.out.println(this.getClass().getResource("Test.class"));
  System.out.println(this.getClass().getResource("/Test.class"));
  System.out.println(this.getClass().getResource("./Test.class"));
  System.out.println(this.getClass().getResource("com/Test.class"));
  System.out.println(this.getClass().getResource("/com/Test.class"));
  System.out.println(this.getClass().getResource("./com/Test.class"));
 }
 
 public static void main(String[] args) {
  Test test = new Test();
 }
}
/* source end. */

编译源代码:
假定%jdk_bin%为jdk/bin目录。
%jdk_bin%\javac test.java
%jdk_bin%\javac com\test.java

编译后在命令行窗口中运行:
假定%jdk_bin%为jdk/bin目录。
%jdk_bin%\java Test
显示结果:
====== Test.class ======
file:/C:/project/
file:/C:/project/
file:/C:/project/
file:/C:/project/Test.class
file:/C:/project/Test.class
file:/C:/project/Test.class
file:/C:/project/com/Test.class
file:/C:/project/com/Test.class
file:/C:/project/com/Test.class
====== com/Test.class ======
file:/C:/project/com/
file:/C:/project/com/
file:/C:/project/
file:/C:/project/com/Test.class
file:/C:/project/Test.class
file:/C:/project/com/Test.class
null
file:/C:/project/com/Test.class
null

打包成可执行Jar后在命令行窗口中运行:
假定%jdk_bin%为jdk/bin目录。
%jdk_bin%\java -jar Test.jar
显示结果:
====== Test.class ======
null
null
null
jar:file:/C:/project/test.jar!/Test.class
jar:file:/C:/project/test.jar!/Test.class
null
jar:file:/C:/project/test.jar!/com/Test.class
jar:file:/C:/project/test.jar!/com/Test.class
null
====== com/Test.class ======
jar:file:/C:/project/test.jar!/com/
null
null
jar:file:/C:/project/test.jar!/com/Test.class
jar:file:/C:/project/test.jar!/Test.class
null
null
jar:file:/C:/project/test.jar!/com/Test.class
null


[参考1]打包成windows双击执行的Jar方法:
1. 在 c:\project 目录下新建 META-INF 目录,在 c:\project\META-INF 目录下新建 MANIFEST.MF 文件,手动生成jar文件的“标明清单(manifest)”。其中“Main-Class: Test”是声明双击jar文件后自动运行的类文件,其中这个类文件一定要有main方法,效果等于运行“java -jar test.jar”命令,但不显示DOS运行窗口。MANIFEST.MF 文件内容如下:
# source begin. #
Manifest-Version: 1.0
Sealed: true
Main-Class: Test
Class-Path:
# source end.   #

2. 在命令行窗口中键入以下命令,其中%java_home%为java安装目录,cvfM中的M一定要大写,因为要明确要求jar文件使用我们自己创建的MANIFEST.MF文件,如果使用小写m,则 META-INF 目录及 MANIFEST.MF 由jar命令生成。
假定%jdk_bin%为jdk/bin目录。
%jdk_bin%\jar cvfM test.jar *.*

[参考2]目录树:
C:\project
  +- com
  |  +- Test.class
  |
  +- META-INF
  |  +- MANIFEST.MF
  |
  +- Test.class

分享到:
评论

相关推荐

    java文件路径获取

    本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好地理解和掌握这些技巧。 #### 二、基本概念 在深入讨论之前,我们需要了解几个基本概念: - **Classpath**: 是Java运行环境的一个重要...

    java 获取项目文件路径实现方法

    这里我们将深入探讨几种不同的方法来实现这一目标,同时解析每种方法的适用场景和返回路径的特点。 1. `this.getClass().getResource("/").getPath().substring(1)` 这种方法返回的是项目的根目录路径。它通过加载...

    路劲

    路劲

    java导出CSV文件,EXCEL文件(不用指定下载路劲)

    本篇将详细介绍如何在Java中实现这两个功能,无需指定下载路径,直接将文件保存到本地,且服务器不需生成临时文件。 首先,我们来讲解CSV文件的导出。CSV是一种轻量级的数据存储格式,它使用逗号分隔值来表示表格...

    根据指定文件或者文件夹路劲压缩文件

    传入指定文件或者文件夹路劲数组进行压缩,支持混合的文件夹或者文件。速度快,不需要额外引入包

    Java中的语句、分支和路径覆盖测试

    总之,Java中的语句覆盖、分支覆盖和路径覆盖是评估测试质量的关键指标。理解并合理应用这些概念,有助于提升软件的健壮性和可靠性,减少因未充分测试而导致的问题。通过有效的测试策略和工具,我们可以更好地保障...

    Unity应用获取外置SD卡路径方法

    本篇文章将详细介绍如何在Unity应用中获取外置SD卡的路径,并结合PicoVR SDK,实现适用于VR场景的打包和安装。 首先,我们要明确在Android平台上,外部存储通常指的是SD卡或者是设备提供的可移除存储空间。在...

    用java学画图,显示轨迹,实现双缓冲效果

    理解画图时,Graphics对象从哪里来的,画到什么地方去,如何实现画图时显示轨迹,代码简单,但搞懂简单的代码后,对其他的理解就非常方便,适合初学者.

    Java基础知识梳理

    Java 是一种广泛使用的编程语言,适合初学者对 Java 相关知识的总结。下面是 Java 基础知识的梳理: 一、Java 开发环境 * JDK(Java Development Kit):可以开发编译与运行 JAVA 程序的工具。 * JRE(Java ...

    用于求最优路劲的蚂蚁或蚁群算法

    蚁群算法是一种 metaheuristics 算法,仿真蚂蚁觅食的过程,以解决组合优化问题。该算法的主要思想是,蚂蚁在觅食时,会留下化学物质(pheromone),以引导其他蚂蚁follow 该路径。蚁群算法将此过程抽象化,使用概率...

    Android打开手机相册获取图片路径

    Android 开发中,获取手机相册中的图片路径是一个常见的问题,以下将详细介绍如何在 Android 中打开手机相册获取图片路径。 一、权限申请 在 Android 中,访问外部存储需要申请权限,包括读取和写入外部存储的权限...

    c#获取各种路径的方法

    本文将详细介绍如何在C#中获取这些路径,并解释每种方法的特点及其适用场景。 #### 二、获取程序路径 1. **`this.GetType().Assembly.Location`** - **作用**:获取当前进程的完整路径,包括文件名。 - **示例...

    贪吃蛇2(java语言设计)

    该贪吃蛇是用java语言写的。贪吃蛇可以吃到普通豆,加分豆,变短豆等,来实现加分,变短等。设为10个级别,可自定义级别。键位可以自定义,蛇体颜色,不同豆的颜色都可以自定义设置。文件包含(jar,源代码,有详细...

    上海路劲佘山院子住宅建筑研发方案

    内容简介:上海路劲佘山院子住宅建筑研发方案( PDF+171页)。图纸包含:项目概况、示范区范围、建筑部分、室内部分、景观设计、设计理念、解决策略、项目区位、方案思路、案例研究、设计寓意、形体生成、概念剖面、...

    获取网页上 xpath , css 路径的插件, 方便爬虫、自动化测试相关软件工作者快速获取页面上html元素路径

    XPath和CSS选择器是两种常见的定位HTML元素的方法,它们被广泛用于网页抓取、网页自动化和测试工具中。这篇内容将详细阐述这两种路径的获取方式以及如何利用浏览器插件提高效率。 首先,XPath(XML Path Language)...

    Java从网络读取图片并保存至本地实例

    总之,这个实例展示了如何在Java中使用基本的I/O流和HTTP连接来实现网络图片的下载和本地保存,对于理解网络通信和文件操作有很好的帮助。在实际开发中,可以根据需求进行扩展,例如添加错误处理、多线程下载或优化...

    GA_PSO-master.zip_PSO解决_ga_pso_hybrid pso_路劲规划_路劲规划 算法

    pso和ga混合算法用来解决路劲规划问题

    Java如何实现上传文件到服务器指定目录

    Java是一种广泛应用于Web开发的编程语言,而上传文件到服务器指定目录是Java Web开发中的一项常见任务。本文将详细介绍如何使用Java实现上传文件到服务器指定目录,并提供示例代码以供参考。 首先,需要引入相关...

    jar包所在文件夹

    在Java中,要与MySQL数据库进行通信,需要引入`mysql-connector-java` jar包。这个驱动程序实现了JDBC(Java Database Connectivity)接口,使得Java应用程序可以通过SQL语句来操作MySQL数据库。开发者在创建Java...

    PDA连接Oracle实例(源码)

    3. **实现WebService服务**: 实现上述接口,将SQL语句封装在服务方法中,并处理与数据库的交互。服务端需要处理可能的异常,如SQL执行错误、网络问题等。 4. **发布WebService**: 将实现的服务部署到应用服务器,如...

Global site tag (gtag.js) - Google Analytics