相关疑难解决方法(0)

在java jar中重复类的含义是什么?

我正在使用ant构建java jar文件.我需要使用"zipfileset src ="xxx.jar""zipfileset src ="yyy.jar"包含其他jar,并且xxx.jar和yyy.jar都包含具有SAME完全限定类名的类.因此生成的jar文件具有重复的类名.重复有什么可能的影响?

谢谢.

java ant jar class duplicates

11
推荐指数
2
解决办法
7227
查看次数

javac 类路径顺序与 Oracle 文档相矛盾?

Sierra/Bates SCJP书第 797 页中:

“java 和 javac [...] 首先查找包含 Java SE 标准类的目录。然后它们查找由类路径定义的目录”

Oracle 文档说明了相同的顺序。

(我知道我不应该这样做,但是......)为了测试这种行为,我在目录中实现了HashSet.javaLol.java:C:\dev\cmdline\TestProject\sources\java\util

package java.util;
public class HashSet {}
Run Code Online (Sandbox Code Playgroud)

package java.util;
import java.util.HashSet;
public class Lol {
    public static void main(String... x) {
        HashSet a = new HashSet();
        a.add("lol");
    }
}
Run Code Online (Sandbox Code Playgroud)

执行时出现编译错误:C:\dev\cmdline\TestProject\sources>javac java/util/Lol.java

java\util\Lol.java:6: 错误: 找不到符号 a.add("lol"); ^符号:方法add(String)位置:HashSet类型的变量a

...这意味着首先使用默认的类路径(当前目录)。

那么,Oracle文档有错吗?您将如何测试类路径顺序?

java jvm

5
推荐指数
1
解决办法
682
查看次数

覆盖Web项目中使用的库中的类

我想修补我在 war 项目中使用的库的 java 类。

我已使用具有相同规范名称的新类覆盖了该类,但在 Web 应用程序中,仍首先加载原始类。如何控制类加载顺序?

我从这篇文章开始,阅读了 JAR Hell: Override class in java

并使用了这里找到的maven示例: http://owenou.com/2010/07/20/patching-with-class-shadowing-and-maven.html

基本上是一个辅助项目,依赖于带有覆盖类和原始库的新修补 jar,以及 MANIFEST.MF 以及这些库在类路径中的正确顺序。所以其他项目可以使用这个辅助项目。

这在独立应用程序中工作得很好,但在 Web 项目中,原始 jar 仍然首先加载。

有什么帮助吗?

java overriding war classloader

1
推荐指数
1
解决办法
4151
查看次数

标签 统计

java ×3

ant ×1

class ×1

classloader ×1

duplicates ×1

jar ×1

jvm ×1

overriding ×1

war ×1