![](/img/trans.png)
[英]Append Node to Existing xml using DocumentBuilderFactory - Java
[英]Segmentation Fault when using DocumentBuilderFactory through the Java Bridge in Delphi
我正在嘗試通過JNI / Java Bridge在Delphi代碼中使用javax.xml.parsers.DocumentBuilderFactory。
這是我為工廠構造的接口:
注意:我知道在類中實際的創建方法是newInstance(),但是當我嘗試使用newInstance而不是init時,也會遇到相同的分段錯誤。
{DocumentBuilderFactory}
JDocumentBuilderFactoryClass = interface(JObjectClass)
['{8475A5A9-F10A-4DDA-9D50-C714C015C81C}']
function init: JDocumentBuilderFactory; cdecl; overload;
end;
[JavaSignature('javax/xml/parsers/DocumentBuilderFactory')]
JDocumentBuilderFactory = interface(JObject)
['{7F4F2927-25EB-4B03-9373-A43B0757CD06}']
function newDocumentBuilder: JDocumentBuilder; cdecl;
end;
TJDocumentBuilderFactory = class
(TJavaGenericImport<JDocumentBuilderFactoryClass, JDocumentBuilderFactory>)
end;
這是調用接口/對象的代碼:
tmpObject: JObject;
// init an object, i have already tried just calling create
tmpObject := TJDocumentBuilderFactory.JavaClass.init;
//then wrap it into the appropriate object
if Assigned(tmpObject) then
builderFactory := TJDocumentBuilderFactory.Wrap
((tmpObject as IlocalObject).GetObjectID);
據我了解,我不必在接口中聲明Java類的每個方法,但我使用了其他類卻沒有問題。
通常,由Java橋引發的分段錯誤表明加載接口或文件時出現問題。 例如,如果java簽名中java類的路徑錯誤,那么也會導致分段錯誤。 但是這里不是這種情況,因為我可以確認路徑正確。 我環顧四周,但找不到任何有關解決此問題的建議。 有任何想法嗎?
問候,
賈森
分段錯誤是可以理解的,因為不可能創建抽象類的實例。
Android 文檔說DocumentBuilderFactory是一個抽象類。 該類提供了一個靜態方法newDocumentBuilder() ,該方法返回DocumentBuilder的新實例。
要創建工廠實例,請使用DocumentBuilderFactory。 newInstance ()。
由於我不使用Delphi的移動版本,因此無法說出如何在JNI適配器上使用靜態工廠方法。 如果沒有記錄,也許值得它自己的Stackoverflow問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.