Javaのメソッドの動作に1.5な1.6
-
12-09-2019 - |
質問
いに対応したアプリケーションして楽しく下Java1.5程度ます。また、ボックスが更新されたJava1.6れます。
後の仕組みを導入し、アプリ、新サーバにまたがその場で発音を確認することが、申請が例外をスローもうとすると変換するにあたコンポーネントです。またなぜこのようなことが起きているのでした展開で、同一のものである。変更後のドv1.5問題を停止し、自動的にすべての。
このメソッドのソース:
import java.io.StringWriter;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public static String xmlToString(Node node) {
try {
Source source = new DOMSource(node);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.transform(source, result);
return stringWriter.getBuffer().toString();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return null;
}
この波の"トランス.変換(ソース,result);"に沿例外:
Exception in thread "main" java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentInfo(DOM2TO.java:373)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:127)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:94)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:662)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:708)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
なんだろうけど、日本人の変更にJavaのバージョンを起こす。うための最も簡単な修正?
おります。
解決
は1.4と1.5または1.5と1.6の間であったが、SunからのJVMに同梱されているXalanライブラリはそのパッケージ名を変更した場合、私は覚えていません。私は約2年前に似たように走りました。私は何を私がしなければならなかったことは、明示的に問題を解決するために私自身のXalanの実装を出荷したと思います。
UPDATE:それはまだあなたの問題に関連している可能性がが、これは、私が考えていた何だったかもしれない<のhref = "http://blog.andrewbeacock.com/2006/12/xalan-classes-go-missing -once-javaの-is.html」のrel = "noreferrer">
のリンクテキスト>他のヒント
この問題は、クラスパス上で、独自ののDocumentBuilderFactoryを提供し、古いのxerces.jarとJDK 1.6で発生することが知られています。
プラットフォームのデフォルトのファクトリを使用している場合、問題は発生しません。
あなたのWEB-INF / libには、または同等確認したいことがあります。
これは、理由は瓶(Xalanの)バージョンの競合の問題があります。 jarファイルを削除して試してみてください。
出会うこと java.lang.AbstractMethodError 私のコードです。
の時間変化のバージョンの意図書館の選択肢はなかったが、この回避策との比較により、その他のコードが不思議。おそらくこれを他にもあるようです。
でなければいけなかったの書い渡されたDOMSource(). もともと 私が作成した文書は標準的な方法:
private static Document documentFromInputStream(InputStream in) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(in));
return doc;
}
へ 周辺のこの課題, 私変更、工場ラインとして
DocumentBuilderFactory factory = new DocumentBuilderFactoryImpl();
今はなくなりを取得します。
あなたは(私はそれがJDK1.6とcompitableべきであると考えている)のXercesから最新のバージョンを使用することもできます。
私は同じ問題を抱えていた&私のアプリケーションのクラスパスにxercesImpl-2.11.0.jarとxercesImpl-2.0.2.jarファイルを置き換えます。その作業罰金。
これは私のために働きました。
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(sWout);
transformer.transform(source, result);