//当前的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中获取项目文件路径的实现方法进行了介绍,需要的朋友可以过来参考下
路劲
亲测OK,可直接导出excel文件,csv文件;不用指定下载路劲,直接下载到本地,服务器不用生成临时文件。
Unity程序获取外置SD卡路径方法,包内包含PicoVR SDK,场景安装打包在手机上,可以看到分屏反畸变效果。
该算法仿真蚂蚁觅食的过程,通过随机性实现求最优路劲的问题,在物流运输方面,应用很广。
传入指定文件或者文件夹路劲数组进行压缩,支持混合的文件夹或者文件。速度快,不需要额外引入包
理解画图时,Graphics对象从哪里来的,画到什么地方去,如何实现画图时显示轨迹,代码简单,但搞懂简单的代码后,对其他的理解就非常方便,适合初学者.
java上传文件 实时获取上传进度 上传RAR,ZIP 并指定解压路劲 上传之后会按照路劲进行解压
代码覆盖是一种用来度量已执行的软件测试水平的方法。收集覆盖度量数据的过程很简单:监测您的代码,并对所监测的版本运行测试。
自己java写的迷宫游戏,提供两种随机生成地图的方式:随机布点法和图的深度优先遍历法两种. 可自动查找路劲并显示...
该贪吃蛇是用java语言写的。贪吃蛇可以吃到普通豆,加分豆,变短豆等,来实现加分,变短等。设为10个级别,可自定义级别。键位可以自定义,蛇体颜色,不同豆的颜色都可以自定义设置。文件包含(jar,源代码,有详细...
内容简介:上海路劲佘山院子住宅建筑研发方案( PDF+171页)。图纸包含:项目概况、示范区范围、建筑部分、室内部分、景观设计、设计理念、解决策略、项目区位、方案思路、案例研究、设计寓意、形体生成、概念剖面、...
分支限界求最短路劲:使用队列进行最短路劲的搜寻,通过分支的剪去减少避免了穷举;纯C编写。
最小路劲查询,源点到节点的权值与路劲走线对比选择最短路劲
自己java写的迷宫游戏,提供两种随机生成地图的方式:随机布点法和图的深度优先遍历法两种. 可自动查找路劲并显示...
pso和ga混合算法用来解决路劲规划问题
得到文档的绝对路径,相对路劲,标准路径,直接上代码。
stata 1.2 stata文件路劲02.mp4