Java通过class文件得到所在jar包
时间: 2023-07-16 11:13:30 浏览: 65
在Java程序中,可以通过以下代码获取当前类所在的jar包路径:
```
String jarPath = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
```
这段代码中,`this.getClass()`表示当前类的Class对象,`getProtectionDomain()`方法返回该类的保护域,`getCodeSource()`方法返回该保护域的代码源,`getLocation()`方法返回代码源的URL,最后通过`getPath()`方法获取URL的路径。
需要注意的是,如果当前类是在classpath下的,那么获取到的路径可能是一个文件夹路径,而不是jar包路径。因此,可以通过判断路径是否以“.jar”结尾来判断当前类是否在jar包中。如果是在jar包中,则需要去掉路径中“file:”前缀和“!/"后缀才是jar包的路径。
相关问题
java代码获取jar包所在的文件位置
可以使用以下代码获取当前运行的jar包所在的文件位置:
```java
String jarFilePath = new File(YourClassName.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath();
```
其中,`YourClassName`是你要获取jar包所在位置的类名。这段代码会获取当前类所在的jar包文件位置的父目录路径。如果你想要获取其他jar包的位置,在`YourClassName`中填写对应的类名即可。
linux查找class類所在jar包
在Linux上查找包含指定class类的jar包可以使用以下命令:
1. 打开终端并切换到目标文件夹或目录。
2. 使用以下命令来查找包含指定class类的jar包:
`find . -name "*.jar" -exec jar tvf {} \; | grep -i "class类名"`
在上述命令中,`.` 表示当前文件夹或目录,`-name "*.jar"` 表示只搜索后缀为.jar的文件,`-exec jar tvf {} \;` 表示对搜索到的.jar文件执行`jar tf`命令来列出包内容,`grep -i "class类名"`表示通过管道过滤出包含指定class类名的信息。
执行命令后,系统将会搜索当前文件夹及其子文件夹下的所有.jar文件,并显示包含指定class类的jar包路径及其具体内容。
注意:请确保在执行命令前已经安装了Java环境,并设置了Java的环境变量。此外,需要将 "class类名" 替换为所要查找的具体class类名。如果存在多个包含指定class类的jar包,将会显示所有匹配结果。