簡體   English   中英

通過Delphi中的Java Bridge使用DocumentBuilderFactory時出現分段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM