gpt4 book ai didi

java - Uncaught Error : Error calling method on NPObject in javascript

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:16 25 4
gpt4 key购买 nike

我想使用小程序来更改存储库。为此,我编写了以下代码:

加载本体:

package owlapi.loader;

import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.*;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.util.DefaultPrefixManager;
import org.semanticweb.owlapi.util.OWLEntityRenamer;

import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Map;


public class LoadOntology {
private static String ontologyDir = "./owlapi/loader/featurepool.owl";
private static OWLOntology localOntology;
private static OWLOntologyManager manager;
private static OWLDataFactory factory;
private static PrefixManager pm = new DefaultPrefixManager("http://wise.vub.ac.be/Members/lamia/variability/Feature_Assembly/FAM.owl#");

public LoadOntology() {
manager = OWLManager.createOWLOntologyManager();
File file = new File(ontologyDir);
try {
localOntology = manager.loadOntologyFromOntologyDocument(file);
System.out.println("Loaded ontology: " + localOntology);
factory = manager.getOWLDataFactory();
}
catch (UnparsableOntologyException e) {
System.out.println("Could not parse the ontology: " + e.getMessage());
Map<OWLParser, OWLParserException> exceptions = e.getExceptions();
for (OWLParser parser : exceptions.keySet()) {
System.out.println("Tried to parse the ontology with the " + parser.getClass().getSimpleName() + " parser");
System.out.println("Failed because: " + exceptions.get(parser).getMessage());
}
}
catch (UnloadableImportException e) {
System.out.println("Could not load import: " + e.getImportsDeclaration());
OWLOntologyCreationException cause = e.getOntologyCreationException();
System.out.println("Reason: " + cause.getMessage());
}
catch (OWLOntologyCreationException e) {
System.out.println("Could not load ontology: " + e.getMessage());
}
}

public void addInstance(String Class, String individual) {
OWLClass owlClass = factory.getOWLClass(Class, pm);
OWLClass superClass = factory.getOWLThing();
OWLIndividual instance = factory.getOWLNamedIndividual(individual, pm);

OWLClassAssertionAxiom classAssertion1 = factory.getOWLClassAssertionAxiom(superClass, instance);
manager.addAxiom(localOntology, classAssertion1);
OWLClassAssertionAxiom classAssertion2 = factory.getOWLClassAssertionAxiom(owlClass, instance);
manager.addAxiom(localOntology, classAssertion2);
System.out.println("Instance added");
}
}

InJava(在 JavaScript 中加载小程序):

public class InJava extends Applet{
private static LoadOntology loadedOntology;

public void addInstance(String Class, String individual) {
Graphics g = getGraphics();
g.drawString("Test", 10, 10);
loadedOntology = new LoadOntology();
loadedOntology.addInstance(Class, individual);
}
}

当我加载小程序时,根本没有错误,但是当我尝试调用方法addInstance时:

<input type="button" value="call Java Applet method" onClick = 'document.owlapi.addInstance("Abstract_Feature", "New_Test")'>
<APPLET CODE="owlapi/InJava.class" NAME="owlapi" HEIGHT=100 WIDTH=100> </APPLET>

浏览器抛出错误未捕获错误:在 NPObject 上调用方法时出错。在阅读了 stackoverflow 上的一些有关此问题的问题后,我得出的结论是该插件一定有问题。

我向该方法添加了一些测试代码(drawString("Test", 10, 10)),该方法有效,因此我建议 LoadOntology 类的构造会出现一些问题(该类已单独测试,其自身工作完美)。有人看到我做错了什么吗?

更新:我添加了小程序使用的java类的一部分:存储库加载器。所有提供的代码都应该可以编译。

更新:我没有使用MASCRIPT/SCRIPTABLE,因为代码基于 this例如,它适用于我当前的浏览器(chrome)

udpate:您必须将 owlapi jar 包含到构建路径中,可以下载 here

最佳答案

根据我所知道的片段,我建议尝试这个 HTML。

<html>
<body>
<APPLET
CODE="owlapi.InJava"
NAME="owlapi"
archive="owlapi/owl1.jar,owlapi/owl2.jar"
HEIGHT=100
WIDTH=100>
</APPLET>
</body>
</html>

此 HTML “静态”嵌入一个小程序 - 不使用 JavaScript。类名(code 属性)应该是类的完全限定名称,而不是文件名。虽然后者通常是可以容忍的,但它是不正确的。它展示了如何从 owlapi 目录导入 API,并根据需要更改名称。

同样值得关注的是混合松散的类文件和 Jars。这往往会让开发人员和 JRE 感到困惑。如果将 owlapi.InJava 类放入 my.jar 中,并将该 Jar 放入与其余 Jar 相同的目录中,则可以添加 codebase 并使 archive 路径更短。像这样:

<html>
<body>
<APPLET
CODE="owlapi.InJava"
NAME="owlapi"
codebase="owlapi"
archive="my.jar,owl1.jar,owl2.jar"
HEIGHT=100
WIDTH=100>
</APPLET>
</body>
</html>

这不是有效的 HTML。这只是一个检查基础知识的测试。稍后,您需要使其成为有效的 HTML,并(可能)使用 applet info. page 中提到的 deployJava.js 部署小程序。 .

关于java - Uncaught Error : Error calling method on NPObject in javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com