2011-11-02 22 views
7

वर्णित कक्षाओं/कार्यों के साथ जावा जार बाइनरी लाइब्रेरी है जिसमें कुछ उपयोगी चीजें हैं (कुछ विशेष सादा जावा - कोई जेएनआई नहीं)। कोई स्रोत उपलब्ध नहीं है।डेल्फी से जावा जार तक पहुंच

उन कार्यों को सीधे डेल्फी से कॉल करने का कार्य है। उसको कैसे करे?

पीएस मुझे डेल्फी के बारे में कुछ नहीं पता, लेकिन मुझे जावा के बारे में बहुत कुछ पता है।

+2

यह उचित है कि आप जेएनआई का उल्लेख करेंगे क्योंकि आप इसका उपयोग करेंगे। याद रखें कि जेएनआई दो-तरफा सड़क है। यह न केवल जावा कोड को मूल कोड कॉल करने की अनुमति देता है, बल्कि देशी कोड को जावा कोड को कॉल करने की अनुमति देता है। –

+2

मुझे नहीं पता था कि यह भी संभव था, लेकिन स्पष्ट रूप से यह जेएनआई का उपयोग कर रहा है। Google Omniscient है: http://home.pacifier.com/~mmead/jni/delphi/informant/di200310kw.htm – GolezTrol

उत्तर

6

नहीं, आप JNI पर जाने का रास्ता नहीं जा सकते हैं।

कुछ संसाधन:

जब तक आप अपने हाथों पर बहुत अधिक समय है, जिसमें आप जार को संपीड़ित सकता है पर फाइलें (वे ज़िप फाइलें हैं), डेल्फी में अपना स्वयं का जावा वीएम लिखें और वहां से जाएं ;-)

+0

मैं Google की बजाय SO खोज का पक्ष लेगा: http://stackoverflow.com/search?q=%5Bdelphi % 5 डी + जीनी – splash

+1

असल में मेरे पास उन जार के स्रोत हैं, क्योंकि मैं लेखक हूं। उद्देश्य किसी अन्य पार्टी को स्रोत नहीं देना था, लेकिन वर्णित इनपुट/आउटपुट के साथ बस बाइनरी जार था। तो मैं तुरंत अपने जार में जेएनआई गेट विकसित करूंगा। बहुत बहुत धन्यवाद! – barmaley

+0

@splash उस समय के लिए धन्यवाद। मेरे अनुभव में, यह भिन्न होता है; कभी-कभी Google खोज बहुत बेहतर होती है, कभी-कभी एसओ खोज। दोनों कोशिश करने के लिए अच्छा है। –

1

क्या जार फ़ाइल में एक मुख्य श्रेणी है जिसे कमांड लाइन से बुलाया जा सकता है? यदि समस्या हल हो जाती है तो डेल्फी कमांड लाइन ऑपरेशंस निष्पादित कर सकती है। यदि कोई मुख्य वर्ग नहीं है तो आप मूल जार फ़ाइल को कॉल कर सकते हैं।

0

यदि आप बाइनरी फ़ाइल को संकुचित करते हैं और किसी प्रकार का आदिम जावा स्रोत उत्पन्न करते हैं, तो आप Java to Pascal converter का उपयोग करने पर विचार कर सकते हैं। यह बिना किसी परेशानी के किया जा सकता है क्योंकि आपने कहा था कि जेएआर विशेष या जटिल नहीं है।

1

डेल्फी विकल्प से निम्न स्तर, समय लेने वाली और त्रुटि प्रवण जेएनआई के तेज़ और सरल विकल्प के रूप में, आपको Java for Delphi आज़माएं।

आप ऑब्जेक्ट ओरिएंटेड एपीआई के साथ काम करेंगे, जेएनआई की तुलना में कोड के एक अंश की आवश्यकता होगी और दिन, हफ्तों (या उपयोग के आधार पर महीनों के बजाय कुछ घंटों में अपनी डेल्फी/जावा एकीकरण समस्या को हल करें मामला)।

उदाहरण के तौर पर, नीचे दिए गए डेल्फी प्रकार की सार्वजनिक घोषणा java.lang.String के साथ एक कोड निकालने के साथ दिखाया गया है कि इसका उपयोग कैसे किया जा सकता है।

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; 
संबंधित मुद्दे