2017-11-11 7 views
0

AndroidスタジオでOpenNLPを使用しようとしていますが、アプリケーションで常にParserConfigurationExceptionがスローされます。私は変更することができませんことを彼らのXmlUtilクラスでOpenNLPによって使用されるコードのこの体、:OpenNLP:documentBuilderFactory.setFeature( "http://javax.xml.XMLConstants/feature/secure-processing"、true)ParserConfigurationException

public static DocumentBuilder createDocumentBuilder() { 
    try { 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     documentBuilderFactory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true); 
     return documentBuilderFactory.newDocumentBuilder(); 
    } catch (ParserConfigurationException var1) { 
     throw new IllegalStateException(var1); 
    } 
} 

documentBuilderFactory.setFeature(「http://javax.xml.XMLConstants/feature/secure-processing」、真の);アプリケーションがParserConfigurationExceptionをスローします。

これで約1週間、このエラーに遭遇したことがありますか?

答えて

0

は、だから、与えられたURL「http://javax.xml.XMLConstants/feature/secure-processing」を使用すると、XMLConstants.FEATURE_SECURE_PROCESSINGに対応していることが判明 - > XMLUtilsクラスはのDocumentBuilderFactoryの機能を設定するためにこれを使用する場合 - このXMLConstantが認識されないので、>それは常に例外をスローします何らかの理由で。

この問題を解決するために、それは/使用されていたとしてXMLUtil.javaクラスは変更不可能であったためopennlp-ツール-1.8.3.jarファイル内でつかん:

私はopennlp-ツールを抽出するために必要な-1.8.3.jarを.classファイルにダウンロードし、設定されている機能を変更するためにClassEditor(.classファイルを編集するためのプログラム)を使用してください:

XMLUtil内の機能の値を変更しました。 Javaファイルをこの関数が例外をスローしないようにする別のファイルにコピーします。

public static DocumentBuilder createDocumentBuilder() { 
    try { 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     documentBuilderFactory.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true); 
     return documentBuilderFactory.newDocumentBuilder(); 
    } catch (ParserConfigurationException var1) { 
     throw new IllegalStateException(var1); 
    } 
} 

これにより、以前は変更不可能なXMLUtil.javaファイルを回避することができましたが、今度はdocumentBuilderFactory.setFeatureは例外をスローしないので、OpenNLPライブラリ内でわずかに変更されたコードを使用することができます。