2011-11-02 53 views
7

説明されているクラス/関数を持つJava jarバイナリライブラリがあります。何も役立たないものは何もありません。利用可能な情報源はありません。DelphiからJava jarへのアクセス

これらの関数をDelphiから直接呼び出すタスクがあります。どうやってするか?

P.S.私はDelphiについて何も知らないが、私はJavaについてたくさん知っている。

+2

JNIは、まさにあなたが使用するものなので、言いたいことは適切です。 JNIは双方向の通りであることを忘れないでください。 Javaコードでネイティブコードを呼び出すだけでなく、ネイティブコードでJavaコードを呼び出すこともできます。 –

+2

これも可能かどうかはわかりませんでしたが、明らかにJNIを使​​用しています。 Googleは全知である:http://home.pacifier.com/~mmead/jni/delphi/informant/di200310kw.htm – GolezTrol

答えて

6

いいえ、行く方法がありませんJNIです。あなたはJARを解凍することがあったEKON 11 conference

  • Delphi JNI questions on SO
  • +0

    私はGoogleの代わりにSOの検索を好むだろう:http://stackoverflow.com/search?q=%5Bdelphi %5D + jni – splash

    +1

    私が作者であるので、実際には私はそれらのソースのソースを持っています。目的は別のパーティにソースを与えることではなく、記述された入出力を持つバイナリジャーを与えることでした。だから私はただちにJNIゲートを私の瓶に開発します。どうもありがとう! – barmaley

    +0

    @splashありがとうございました。私の経験では、それは異なります。時にはGoogleの検索がはるかに良い、時にはSOの検索です。両方を試してみるのは良いことです。 –

    1

    jarファイルには、コマンドラインから呼び出せるメインクラスが含まれていますか?問題が解決した場合、Delphiはコマンドライン操作を実行できます。メインクラスがない場合は、元のjarファイルを呼び出すクラスを作成できます。

    0

    バイナリファイルを逆コンパイルして、何らかのプリミティブなJavaソースを生成する場合は、Java to Pascal converterを使用することを検討してください。これは、JARが特別なものでも複雑でもないと言って以来、多大な苦労なしに実行可能でなければなりません。

    1

    Delphiの低レベルで時間がかかり、エラーが発生しやすいJNIオプションの代わりに、より速く簡単な方法として、Java for Delphiを試す必要があります。

    あなたはオブジェクト指向のAPIを扱うことになり、JNIと比べるとコードのほんの一部しか必要とせず、数日、数週間(あるいは数ヶ月)の代わりに数時間でDelphi/Javaの統合の問題を解決します場合)。

    例として、java.lang.Stringに対応するDelphi型のパブリック宣言が、その使用方法を示すコード抽出を示しています。

    J4SOFTにお気軽にお問い合わせください。お手伝いします。

    Procedure Sample; 
    var 
        AJavaString: Ijava_lang_String; 
        AValue: string; 
    begin 
        AJavaString := Tjava_lang_String.Create('A value'); 
        AValue := AjavaString.ToString; 
        if AJavaString.StartsWith('A') then 
        ... 
    end; 
    
    ... 
    type 
        Tjava_lang_String = class(Tjava_lang_Object, Ijava_lang_String) 
        public 
        constructor Create; 
        constructor Create(p0: string); 
        constructor Create(p0: Ijava_lang_StringBuffer); 
        constructor Create(p0: Ijava_lang_StringBuilder); 
        constructor Create(p0: TjxByte1DArray); 
        constructor Create(p0: TjxByte1DArray; p1: Longint); 
        constructor Create(p0: TjxByte1DArray; p1: Longint; p2: Longint); 
        constructor Create(p0: TjxByte1DArray; p1: Longint; p2: Longint; p3: Longint); 
        constructor Create(p0: TjxByte1DArray; p1: Longint; p2: Longint; p3: string); 
        constructor Create(p0: TjxByte1DArray; p1: string); 
        constructor Create(p0: TjxChar1DArray); 
        constructor Create(p0: TjxChar1DArray; p1: Longint; p2: Longint); 
        constructor Create(p0: TjxInt1DArray; p1: Longint; p2: Longint); 
        function CharAt(p0: Longint): Char; 
        function CodePointAt(p0: Longint): Longint; 
        function CodePointBefore(p0: Longint): Longint; 
        function CodePointCount(p0: Longint; p1: Longint): Longint; 
        function CompareTo(p0: string): Longint; 
        function CompareToIgnoreCase(p0: string): Longint; 
        function Concat(p0: string): string; 
        function ContentEquals(p0: Ijava_lang_StringBuffer): Boolean; 
        class function CopyValueOf(p0: TjxChar1DArray): string; 
        class function CopyValueOf(p0: TjxChar1DArray; p1: Longint; p2: Longint): string; 
        function EndsWith(p0: string): Boolean; 
        function Equals(p0: Ijava_lang_Object): Boolean; reintroduce; 
        function EqualsIgnoreCase(p0: string): Boolean; 
        class function Format(p0: string; p1: Tjava_lang_Object1DArray): string; 
        function GetBytes: TjxByte1DArray; 
        procedure GetBytes(p0: Longint; p1: Longint; p2: TjxByte1DArray; p3: Longint); 
        function GetBytes(p0: string): TjxByte1DArray; 
        procedure GetChars(p0: Longint; p1: Longint; p2: TjxChar1DArray; p3: Longint); 
        function HashCode: Longint; 
        function IndexOf(p0: Longint): Longint; 
        function IndexOf(p0: Longint; p1: Longint): Longint; 
        function IndexOf(p0: string): Longint; 
        function IndexOf(p0: string; p1: Longint): Longint; 
        function Intern: string; 
        function IsEmpty: Boolean; 
        function LastIndexOf(p0: Longint): Longint; 
        function LastIndexOf(p0: Longint; p1: Longint): Longint; 
        function LastIndexOf(p0: string): Longint; 
        function LastIndexOf(p0: string; p1: Longint): Longint; 
        function Length_: Longint; 
        function Matches(p0: string): Boolean; 
        function OffsetByCodePoints(p0: Longint; p1: Longint): Longint; 
        function RegionMatches(p0: Longint; p1: string; p2: Longint; p3: Longint): Boolean; 
        function RegionMatches(p0: Boolean; p1: Longint; p2: string; p3: Longint; p4: Longint): Boolean; 
        function Replace(p0: Char; p1: Char): string; 
        function ReplaceAll(p0: string; p1: string): string; 
        function ReplaceFirst(p0: string; p1: string): string; 
        function Split(p0: string): TjxString1DArray; 
        function Split(p0: string; p1: Longint): TjxString1DArray; 
        function StartsWith(p0: string): Boolean; 
        function StartsWith(p0: string; p1: Longint): Boolean; 
        function Substring(p0: Longint): string; 
        function Substring(p0: Longint; p1: Longint): string; 
        function ToCharArray: TjxChar1DArray; 
        function ToLowerCase: string; 
        function ToString: string; 
        function ToUpperCase: string; 
        function Trim: string; 
        class function ValueOf(p0: Char): string; 
        class function ValueOf(p0: Double): string; 
        class function ValueOf(p0: Single): string; 
        class function ValueOf(p0: Longint): string; 
        class function ValueOf(p0: Int64): string; 
        class function ValueOf(p0: Ijava_lang_Object): string; 
        class function ValueOf(p0: Boolean): string; 
        class function ValueOf(p0: TjxChar1DArray): string; 
        class function ValueOf(p0: TjxChar1DArray; p1: Longint; p2: Longint): string; 
        property CASE_INSENSITIVE_ORDER; 
        end; 
    
    関連する問題