admin 发布的文章
JAVA语言教程2 java语言基本语法
java的语法规则,在现实生活中,如果我们想流畅的写一篇文章的话。我们需要知道词组,一些修辞手法。例如,排比或者比喻。在生产制造的工厂,产品的生产也同样的遵循一定的规则和顺序,把成品所需要的原材料按照一定的规则和顺序组装在一起。在软件的开发中,也同样的需要一些特定的规则和原材料。
记一次java.lang.NoSuchMethodError(Jar包冲突)问题解决的方法
package com.lianxin.test;
/**
- Description:
- 记一次java.lang.NoSuchMethodError(Jar包冲突)问题解决的方法
- https://blog.csdn.net/wzw114/article/details/117423495
- @author: N
- @Date: 2021/12/21 17:19
*/
import java.io.IOException;
import java.security.CodeSource;
import java.security.ProtectionDomain;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class JarFind {
public static void main(String[] args) {
String PakageString = "org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth";
GetFilePathByPackage(PakageString);
System.out.println("\r\n");
// 获取Class路径
String alljar = System.getProperty("java.class.path");
String[] alljarpath = alljar.split(";");
// 根据路径遍历,该路径下的Jar包是否有该包,有就打印
for (String jarpath : alljarpath) {
if (jarpath.contains("jar")) {
String[] jar = new String[2];
jar[0] = jarpath;
jar[1] = PakageString;
getClassNameByJarAndPackage(jar);
}
}
}
/**
* 根据类名打印JVM加载的类对应的Jar包路径,如GetFilePathByPackage("java.util")。
*
* @param PakageString 类名
*/
public static void GetFilePathByPackage(String PakageString) {
System.out.println("查找的类:" + PakageString);
try {
Class<?> c = Class.forName(PakageString);
ProtectionDomain pd = c.getProtectionDomain();
CodeSource cs = pd.getCodeSource();
System.out.println("加载的类对应的路径:" + cs.getLocation().toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 根据jar包路径和包名来查询jar包中是否含有有关类
*
* @param jar jar[0] jar路径 jar[1] 包名
*/
@SuppressWarnings("resource")
public static void getClassNameByJarAndPackage(String[] jar) {
String jarFilePath = jar[0];
String packagePath = jar[1].replace(".", "/");
try {
JarFile jarFile = new JarFile(jarFilePath);
Enumeration<JarEntry> entrys = jarFile.entries();
while (entrys.hasMoreElements()) {
JarEntry jarEntry = entrys.nextElement();
String entryName = jarEntry.getName();
if (entryName.equals(packagePath + ".class")) {
System.out.println("类路径:" + entryName + "\r\n" + "jar包的路径:" + jarFilePath);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}}
java语言教程9-什么是java类和面向对象编程
java类
java基础教程-java修饰符详解以及java修饰符的作用范围
Java 修饰符用来定义类、方法或者变量,通常放在语句的最前端。

