gpt4 book ai didi

java - com.sun.enterprise.container.common.spi.util.InjectionException : Error creating managed object for class

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

我正在尝试制作一个 Web 服务字典,它可以解析包含两种不同语言(塞尔维亚语和意大利语)单词的 XML 文件,并将翻译返回给客户端。 dictionary.xml 放置在项目根文件夹中,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
<word>
<sr>automobil</sr>
<it>macchina</it>
</word>
<word>
<sr>cvet</sr>
<it>fiore</it>
</word>
<word>
<sr>knjiga</sr>
<it>libro</it>
</word>
<word>
<sr>pas</sr>
<it>cane</it>
</word>
<word>
<sr>jabuka</sr>
<it>mela</it>
</word>
</dictionary>

我创建了一个只有一个 WebMethod 的接口(interface),用于接收单词、原始语言和目标语言:

package service;

@WebService
public interface Translator {

@WebMethod
String translate(String original, String orgLang, String destLang);
}

我编写了一个如下所示的实现类:

    @WebService(endpointInterface = "service.Translator")
public class TranslatorClass implements Translator {

Document doc;
String translation;
Element root;

public TranslatorClass() throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File("dictionary.xml"));
root = doc.getDocumentElement();
}

@Override
public String translate(String original, String orgLang, String destLang) {

if(orgLang.equals("sr")) {
NodeList srNodeList = root.getElementsByTagName("sr");
for(int i=0; i<srNodeList.getLength(); i++) {
Node node = srNodeList.item(i);
if(node.getTextContent().equals(original)) {
translation = node.getNextSibling().getTextContent();
}
}
}
else {
NodeList itNodeList = root.getElementsByTagName("it");
for(int i=0; i<itNodeList.getLength(); i++) {
Node node = itNodeList.item(i);
if(node.getTextContent().equals(original)) {
translation = node.getPreviousSibling().getTextContent();
}
}
}

return translation;
}
}

当我尝试在 GlassFish 服务器上测试它时,我从帖子标题中收到错误。有人可以帮我解决这个问题吗? xml 文件是否应该放置在其他位置?

谢谢。

最佳答案

好的,我找到了答案。我将读取文件的逻辑移至网络方法“翻译”中。无论如何,构建器都找不到使用此版本的代码解析所需的文件。最后,我通过将xml文件放在与TranslatorClass相同的包中并调用InputStream stream = TranslatorClass.class.getResourceAsStream("dictionary.xml");解决了这个问题。之后,我只是将流传递给构建器进行解析,它就起作用了。

关于java - com.sun.enterprise.container.common.spi.util.InjectionException : Error creating managed object for class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34345732/

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