2011-11-02 3 views
7

설명 된 클래스/함수가있는 Java jar 바이너리 라이브러리가 있습니다.이 클래스 라이브러리는 몇 가지 유용한 기능을 제공합니다 (특별한 자바가 없으며 JNI가 없음). 사용할 수있는 출처가 없습니다.Delphi에서 Java jar에 액세스

Delphi에서 직접 이러한 함수를 호출하는 작업이 있습니다. 그렇게하는 방법?

P. 델파이에 대해서는 아무 것도 모르지만 Java에 대해서는 많이 알고 있습니다.

+2

JNI는 정확하게 사용할 것이므로 언급하는 것이 적절합니다. JNI는 양방향 거리라는 것을 기억하십시오. Java 코드가 원시 코드를 호출 할 수있을뿐만 아니라 원시 코드가 Java 코드를 호출 할 수도 있습니다. –

+2

이것이 가능한지는 몰랐지만 분명히 JNI를 사용하고 있습니다. Google은 전능적입니다 : http://home.pacifier.com/~mmead/jni/delphi/informant/di200310kw.htm – GolezTrol

답변

6

아니야 갈 방법이 없습니다. JNI입니다.

몇 가지 관련 자료 : EKON 11 conference

  • Delphi JNI questions on SO
  • 당신이 JAR 압축을 해제 할 수있는 당신의 손에 너무 많은 시간을 가지고하지 않는 한에서

    +0

    Google 대신 SO 검색을 선호합니다. http://stackoverflow.com/search?q=%5Bdelphi % 5D + jni – splash

    +1

    사실 내가 저자이기 때문에 사실 그 항아리의 근원이 있습니다. 목적은 다른 사람에게 소스를 제공하는 것이 아니라 설명 된 입력/출력을 가진 바이너리 항아리를 제공하는 것이 었습니다. 그래서 즉시 JNI 게이트를 개발할 것입니다. 고맙습니다. – barmaley

    +0

    @splash 시간 내 주셔서 감사합니다. 내 경험에 의하면, 그것은 다양합니다. 때로는 Google 검색이 훨씬 더 좋으며 때로는 SO 검색입니다. 둘 다 시도하는 것이 좋습니다. –

    1

    jar 파일에 명령 줄에서 호출 할 수있는 기본 클래스가 포함되어 있습니까? 문제가 해결되면 델파이는 명령 행 작업을 실행할 수 있습니다. 메인 클래스가없는 경우, 원의 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; 
    
    관련 문제