- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自下面链接中的答案Link
我发现可以通过将其添加到classpath中来解决。但我正在使用自定义类加载器来加载 jar axiom-impl-1.2.14。有什么办法可以实现这一点吗?
axiom jar 正在使用 ClassLoader。枚举 getResources(String name) 在 jar 内部加载该 xml。在我们的例子中,XML 文件位于 jar 文件中。所以我正在寻找可以获取 XML 文件 URL 的解决方案。
源代码:
公共(public)类ExternalClassLoader扩展了ClassLoader {
private String jarFile = "";
private Hashtable<String, Class> classes = new Hashtable<String, Class>();
public ExternalClassLoader(String jarLocation) {
super(ExternalClassLoader.class.getClassLoader());
this.jarFile = jarLocation;
}
@Override
public Class loadClass(String className) throws ClassNotFoundException {
return findClass(className);
}
@Override
public Class findClass(String className) {
byte classByte[];
Class result = null;
System.out.println("CLASS : " + className);
result = (Class) classes.get(className);
if (result != null) {
return result;
}
try {
return findSystemClass(className);
} catch (Exception e) {
}
JarFile jar = null;
try {
jar = new JarFile(jarFile);
String classLocation = className.replace('.', '/');
JarEntry entry = jar.getJarEntry(classLocation + ".class");
InputStream is = jar.getInputStream(entry);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
int nextValue = is.read();
while (-1 != nextValue) {
byteStream.write(nextValue);
nextValue = is.read();
}
classByte = byteStream.toByteArray();
result = defineClass(className, classByte, 0, classByte.length, null);
classes.put(className, result);
return result;
} catch (Exception e) {
System.out.println("ERROR CLASS : " + className);
return null;
} finally {
try {
jar.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public InputStream getResourceAsStream(String name) {
try {
System.out.println("RESOURCE : " + jarFile + "//" + name);
JarFile jar = new JarFile(jarFile);
JarEntry entry = jar.getJarEntry(name);
return jar.getInputStream(entry);
} catch (IOException e) {
System.out.println("ERROR RESOURCE : " + jarFile + "//" + name);
return null;
}
}
}
最佳答案
由于您没有指定详细信息,我假设与类加载器的类路径中的另一个版本的 axiom-impl
发生冲突,应用程序的其余部分已加载(否则您可以只使用一个或多个 URLClassLoader
实例或更改应用程序类加载器的类加载策略)。
我还假设(正如您在评论中提到的)axiom-api
和 axiom-impl
均由同一个自定义类加载器加载,或者您认为将这两个 JAR 中的类合并到一个 JAR 中(在这种情况下,我假设您不在同一个 JAR 中包含 axiom-dom
,因为这会导致其他问题)。
如果这些假设成立,那么您需要的是一个类加载器,它从一个或多个 JAR 文件加载类,并使用父级最后作为类加载策略。为了实现这一点,您不需要像您在发布的代码中尝试那样重新实现 JAR 加载逻辑。相反,您可以使用 URLClassLoader
,但您需要扩展它以将其类加载策略从默认的父级加载更改为父级加载最后。 Apache Axiom 本身的源代码中实际上有一个这样的示例:
您可能可以按原样使用该代码,尽管您可能希望删除 javax.*
上的包过滤器,因为在您的情况下这不是必需的。
关于java - 找不到功能 'default' 的元工厂;这通常意味着 axiom-impl.jar 不在类路径中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099823/
我正在尝试执行以下操作。 OMElement soapEnvelope = new StAXOMBuilder(soapEnvelopXMLFilePath).getDocumentElement()
在 Java OWL API 中,可以使用 OWLEquivalentClassesAxiom 添加等效类。是否有任何类似的类用于添加 OWL SameAs axiom? 最佳答案 我想你会想要OWL
谁能告诉我一个简单的例子如何使用Streicher_K_来自 Coq.Logic.EqdepFacts 的公理? 也许是为了展示一个简单的事实: Lemma single_proof : forall
我正在尝试编译 Axis2 附带的简单 SOAP 客户端示例。但是 Java 编译器找不到导入: import org.apache.axiom.om.OMAbstractFactory; impor
我正在阅读 the Multivalued dependency page维基百科。为多值依赖提供了一些属性。但是没有给出以下属性: 如果 A →→ BC 那么 A →→ B 和 A →→ C (→→
我试图理解 OWL 2 的以下公理,但不知道它们是哪种公理。这里 R 是角色,C 是类 ∃R⊑C ∃R⊑∃R.C C ⊑ ¬∃R ∃R ⊑ ¬C 到目前为止,我认为 1 提供了有关 R 范围的信息,但
我正在尝试创建具有大型 XML 正文的 SOAP 消息。 XML 正文来自输入流,并且 SOAP 消息是手动创建的。如何使用 AXIOM 创建消息而不将整个 XML 正文加载到内存中。我开始的代码是:
SAAJ 基于 DOM,即文档对象模型。这句话是什么意思? AXIOM 基于 StAX,即 XML 的流 API。这句话是什么意思? 哪个更好? 我想澄清关于这两个 API 的概念。谢谢你 最佳答案
我想验证我的 xpath 参数 这是我的 xml name1 name2 以下是我的java代码 String xmlPayload="name1name2";
假设我们有这个本体: Class A: equivalentTo: hasRel D Class B: equivalentTo: A and hasRel C Class C C
我想知道如何在 Safe 函数中使用 Axiom 数据库资源。 现在我只是手动处理连接,但我知道使用已经定义的资源会更好。 最佳答案 我找到了方法。 如果需要这样做,你可以这样做: 在 safe.t_
我有一个包含 XML 的 InputStream,其中包含转义 XML 的内容。转义 XML 的大小可能达到数百兆字节,因此必须将其作为自己的 XML 文档进行处理,以防止 Apache Axiom
在 Coq 中我可以写 Variable A : False. Axiom B : False. 假设 False 名称为 A 和 B 。这两个陈述都适用于证明,所以我可以 Theorem nothi
PA6 : ∀{m n} -> m ≡ n -> n ≡ m 是我试图解决和支持的公理,我尝试使用 cong (来自核心库),但在使用 cong 构造函数时遇到问题 PA6 = cong 让我无处可去
AXIOM 中的 OMNode 和 OMElement 有什么区别和用法?我已经实现了一个 XML 解析器,并且在实现中使用了这两个对象。 OMElement 是 OMNode 的子类吗? 举个例子,
请帮助使用 apache axiom 生成 xml 文件,任何带有一个父标签和两个子标签的 xml 文件,我尝试了以下代码 OMFactory factory = OMAbstractFactory.
我已在 pom.xml 上尝试了以下设置来使用 Axis2 wsdl2code: org.apache.axis2 axis2 1.5.1 ...
我正在尝试为 WSDL(使用 xmlbeans)生成一些 stub ,但不断遇到一些问题。我正在使用以下页面: http://axis.apache.org/axis2/java/core/docs/
我对 Java 中的 Web 服务还很陌生。我开始的项目已经实现,并且有很多对 org.apache.axiom.om 命名空间的引用。 om 代表什么? 最佳答案 我猜它代表对象模型,因为它在Axi
我遇到错误,它说 java.lang.NoClassDefFoundError: org/apache/axiom/om/OMNode 在我的 Java Web 应用程序中。顺便说一下,我实现了 se
我是一名优秀的程序员,十分优秀!