Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Java运行时环境中是否存在具有指定类名的重复类?_Java_Gradle_Classloader - Fatal编程技术网

如何检查Java运行时环境中是否存在具有指定类名的重复类?

如何检查Java运行时环境中是否存在具有指定类名的重复类?,java,gradle,classloader,Java,Gradle,Classloader,我的应用程序在有重复类的情况下无法正常运行,问题是“没有这样的方法” 该项目有两个类名相同的类,一个来自项目代码,另一个来自jar文件。如何在应用程序启动时检查此问题 src/main/java/com/kxw/Example.java gradle.build compile("com.kxw:xxx:1.0")//contains com.kxw.Example 我希望在应用程序启动时可以检查JavaAPI或UTIL public void startUp(){

我的应用程序在有重复类的情况下无法正常运行,问题是“没有这样的方法”

该项目有两个类名相同的类,一个来自项目代码,另一个来自jar文件。如何在应用程序启动时检查此问题

src/main/java/com/kxw/Example.java

gradle.build
compile("com.kxw:xxx:1.0")//contains com.kxw.Example
我希望在应用程序启动时可以检查JavaAPI或UTIL

public void startUp(){

     if(existDuplicateClass("com.kxw.Example")){
           shutdown();
     }
}

protected boolean existDuplicateClass(String className){

//TODO
}

我不知道如何实现existDuplicateClass方法

参考文献:

最后,我用这种方式启动时检查复制类:

 String classPath = Optional.ofNullable(xx.class.getProtectionDomain())
                    .map(ProtectionDomain::getCodeSource)
                    .map(CodeSource::getLocation)
                    .map(URL::getPath).orElse("");

//class is not from common-core.jar
if (!classPath.contains("common-core")) {
        log.error("{} thrift class may be duplicate ...", xx.class.getName());
        shutdownContext.shutdown();
}

Java确实没有用于此的实用程序。你不应该给你的类取相同的名字,那是一场灾难。包是将类分开的名称空间,请使用它们;您可以在源代码中为所有此类可以复制的类实现
version
方法,并在启动时手动检查它们-代码将通过或失败,methodnotfound异常。我同意,如何实现version方法,请给我一些提示?