Eclipse প্রবর্তনের সাথে কীভাবে "java.library.path" এ নেটিভ লাইব্রেরি যুক্ত করবেন (এটি ওভাররাইড না করে)


92

আমি একটি নেটিভ লাইব্রেরি পেয়েছি যা java.library.path এ যুক্ত করা দরকার । জেভিএম যুক্তি দিয়ে -জেভা.লিবারি.পথ = পথ ... আমি যেমন চাই ঠিক তেমন সেট করতে পারি।

আমার সমস্যাটি হ'ল আমার অন্যান্য গ্রন্থাগার (পেন্টাহো রিপোর্টিং) ডিফল্ট java.library.path (সিস্টেম ডিরেক্টরিগুলি সহ) এর উপর ভিত্তি করে ফন্টগুলি অনুসন্ধান করে এবং ম্যানুয়াল সেটিং ডিফল্ট পাথকে ওভাররাইড করে ..

সুতরাং: আমি কীভাবে ওভাররাইডের পরিবর্তে ডিফল্ট java.library.path- এ পাথ এন্ট্রি যুক্ত করতে পারি (যা মনে হয় -jj.library.path দিয়ে সম্পন্ন হয়েছে)? (আমি হাতে ডিফল্ট পাথ যোগ করতে চাই না, যা মোতায়েনের পক্ষে ভাল হবে না)

সম্পাদনা: বিবরণ হারিয়ে যাওয়ার জন্য দুঃখিত; আমি Eclipse নিয়ে কাজ করছি। (স্থাপনাটি জেএনএলপি দিয়ে সম্পন্ন হয়েছে এবং সেখানে আমি সম্পদের আওতায় নেটিলিব ব্যবহার করতে পারি )


4
অনুগ্রহ পরিবর্তে এই প্রশ্নের জন্য গৃহীত উত্তর দেখার - আমার জন্য এটি অনেক ভালো আছে: stackoverflow.com/questions/957700/...
laher

"কীভাবে দেশীয় লাইব্রেরি যুক্ত করতে হবে .." প্রশ্নটি বিভ্রান্তিকর। এটি সম্ভবত অন্য একটি "লাইব্রেরি পাথ" যুক্ত করার (সংযোজন বা প্রিপেন্ডিং) সম্পর্কিত, যেমন ধরে নেওয়া যে Eclipse java.library.path = path1: path2: path3 এর মতো কিছু ডিফল্টরূপে দেখায়, প্রশ্নটি হল java.library এ শেষ হয়ে যাওয়া ग्रहणটি কীভাবে শুরু করা যায় .পথ = আমার / লিবিব / ফোল্ডার: পথ 1: পাথ 2: পাথ 3
তিমি

উত্তর:


46

এই সমস্যাটি ভুলে গিয়েছিলাম ... আমি প্রকৃতপক্ষে গ্রহণের সাথে জিজ্ঞাসা করছিলাম, প্রাথমিকভাবে তা না বলে দুঃখিত। এবং উত্তরটি খুব সহজ বলে মনে হচ্ছে (কমপক্ষে 3.5 এর সাথে; সম্ভবত পুরানো সংস্করণগুলির সাথেও):

জাভা রান কনফিগারেশন এর আর্গুমেন্ট: ভিএম যুক্তি:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

উদ্ধৃতি চিহ্নগুলি অবশ্যই ভুলে যাবেন না, অন্যথায় PATH- এ স্পেস নিয়ে সমস্যা রয়েছে।


7
যদি দুটি ভাগ করে নেওয়া গ্রন্থাগার থাকে, অন্যটির উপর নির্ভর করে তবে এটি কাজ করবে না। প্রথমটি জাভা রানটাইম দ্বারা পাওয়া যায় তবে দ্বিতীয়টি সিস্টেম ডায়নামিক লোডার দ্বারা সমাধান করা হয়। আমি খুঁজে পাওয়া একমাত্র সমাধান হ'ল এলডি_লিবিআরএআইএপিএটি সেট করা।
কেভিন

4
@ টুকোর দেওয়া উত্তরটি মূল প্রশ্নের সাথে খাপ খায় না যা কোনও নেটিভ লাইব্রেরি ফোল্ডার সংযোজন বা প্রেন্ডেন্টিং সম্পর্কিত। কমপক্ষে ম্যাক ওএস 10.8 এ, on PATH বা $ LD_LIBRARY_PATH বা nor {ওয়ার্কস্পেস_লোক: প্রকল্প project \ lib এর ডিফল্ট মানটির সাথে কিছু করার নেই। উদাহরণস্বরূপ, আমার ম্যাকের ডিফল্ট মান হ'ল হোম / লাইব্রেরি / জাভা / এক্সটেনশানস: / গ্রন্থাগার / জাভা / এক্সটেনশানস: / নেটওয়ার্ক / লাইব্রেরি / জাভা / এক্সটেনশানস: / সিস্টেম / গ্রন্থাগার / জাভা / এক্সটেনশানস: / মার্কিন / লিবিব / জাভা :।
তিমি

আপনি যদি একটিলিপটিতে টেস্টএনজি ব্যবহার করে থাকেন তবে আপনার টেস্টএনজি রান কনফিগারেশনটি সম্পাদনা করতে হবে: - রান কনফিগারেশন উইন্ডোতে আপনার লক্ষ্য টেস্টএনজি কনফিগারেশন নির্বাচন করুন। - পরিবেশ ট্যাবটি নির্বাচন করুন - একটি PATH ভেরিয়েবল যুক্ত করুন এবং এটির লক্ষ্যমাত্রাকে আপনার টার্গেটে সেট করুন - ডিফল্ট করা "স্থানীয় পরিবেশে পরিবেশ যুক্ত করুন" টগল করুন।
ফিলিপ

আমি একটি উদাহরণ পেতে পারি?
বেসিকরেল

@ কেভিনক্লিনটি কীভাবে এই ক্ষেত্রে কাজ করবে না তা বিশদ দেওয়ার জন্য আপনার মনে হবে? আমি এই সমস্যাটি সবেমাত্র চালিয়ে এসেছি এবং এই সমাধানে কী ভুল তা বোঝার চেষ্টা করছি।
আনুলা

14

যদি আপনি java.library.pathEclipse এ বিকাশের সময়ে হস্তক্ষেপ না করে একটি নেটিভ লাইব্রেরি যুক্ত করতে চান (নিখুঁত পাথগুলি অন্তর্ভুক্ত করা এবং আপনার লঞ্চ কনফিগারেশনে প্যারামিটার যুক্ত না করা), আপনি জাভা বিল্ডের প্রতিটি জারের জন্য স্থানীয় গ্রন্থাগারগুলির অবস্থান সরবরাহ করতে পারেন নেটিভ লাইব্রেরির অবস্থানের অধীনে পাথ কথোপকথন । নোট করুন যে নেটিভ লাইব্রেরি ফাইলের নামটির সাথে জার ফাইলের নামের সাথে মিল থাকতে পারে। এই বিস্তারিত বিবরণ দেখুন


4
-1। আপনি ধরে নিচ্ছেন যে শেষ-ব্যবহারকারী কোনও আইডিই থেকে অ্যাপ্লিকেশনটি চালাচ্ছেন, এটি অসম্ভব।
ফিনউইউ

@ আমি আপনার বক্তব্যটি দেখতে পাচ্ছি ওভাররাইড না করে উন্নয়নের সময় আইডিইতে কীভাবে একটি নেটিভ লাইব্রেরি যুক্ত করা যায় তার সমাধানের সন্ধান করতে আমি প্রশ্নটি পেয়েছি এবং java.library.pathঅন্য কোথাও সমাধান সন্ধান করে ফিরে এসেছি। পরিষ্কার করার জন্য আমার উত্তরটি সম্পাদনা করবে।
ফ্যাবিয়ান স্টেগ

বাস্তবে আমি Eclipse নিয়ে কাজ করছি যদিও আমি প্রশ্নটিতে এটি উল্লেখ না করেই করেছি।
Touko

এটি বাস্তবে Eclipse (লুনা) এর বর্তমান সংস্করণে কাজ করে না কারণ সম্পত্তি নির্ধারণ করা জাভা.লিবারিয়ান.প্যাথকে ওভাররাইড করে যেমন ব্যবহারকারীর প্রশ্নের একটি সমস্যা বলে বর্ণনা করে।
অ্যালেক্স এন।

9

এসডব্লিউটি প্রয়োজনীয় নেটিভ ডিএলএলগুলিকে একটি জারে রাখে। উদাহরণস্বরূপ "org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar" অনুসন্ধান করুন।

ডিএলএলগুলি অবশ্যই জেআর এর মূলে থাকতে হবে, জেআর স্বাক্ষর করতে হবে এবং ডিএমএলকে ভিএম বাছাইয়ের জন্য মেটা-আইএনএফ / মনিফেসেএমএফ-তে চেকসামের সাথে উপস্থিত হতে হবে।


4
আমি কীভাবে এটি নেটবীনের সাথে করতে পারি?
ম্যাকিক সাউকি

আফাইক, নেটবিয়ানস প্রকল্পটি তৈরিতে পিঁপড়া ব্যবহার করে। কীভাবে স্বাক্ষরিত জআআআআআআর তৈরি করতে হয় এবং কীভাবে ম্যানিফেস্টে ডিএলএলগুলির মতো জিনিস স্থাপন করা যায় সে জন্য পিঁপড়ার জন্য ডকুমেন্টেশন পড়ুন।
অ্যারন দিগুল্লা

আমি কীভাবে এটি গ্রহণ করব? .ডিল যোগ করার জন্য?
NoBugs

@ নোবগস: অ্যাকলিপসে, এই পোস্টে সহায়তা করা উচিত: একলিপসিজোন.com
অ্যারন ডিগুলা

@ অ্যারনডিগুল্লা আপনি কি পরামর্শ দিচ্ছেন যে ডিএলএল সর্বদা এভাবে যুক্ত থাকতে পারে? আমি ভেবেছিলাম যে এটি কেবল এমন কিছু অনুসন্ধান করে java.library.path। আপনি কি পরামর্শ দিচ্ছেন যে এটি কেবলমাত্র মূলের সিট করবেন jar?

4

উইন্ডোজে, এর মতো:

-ডজভা.লিবারি.পাথ = "সি: / মাইলিবপথ;% पथ%"

% PATH% হ'ল আপনার পুরানো-জাভা.লিবারিয়ান.পথ


এই ধারণাটি চেষ্টা করেও এর ফলস্বরূপ জাভা.লিবারিয়ান.পথ: ডি: \ ওয়ার্কস্পেস \ মাইপ্রজেক্ট \ লাইব;%
पथ

আপনি $ {system_property: java.library.path}
রব এলসনার

4
ইউনিক্স / ম্যাক / জিএনইউ লিনাক্সের ডিফল্ট হ'ল এলডি_লিবারি_প্যাথ H PATH একটি উইন্ডোজ জিনিস।
whaefelinger

2

আপনি নিজের নেটিভ লাইব্রেরিটি লোড করার জন্য প্রোগ্রামটিমেটিকভাবে ফোন.এলড () কল করে এটিকে পেতে পারেন ? এই পদ্ধতিটি ( System.loadLibrary () এর বিপরীতে ) আপনাকে পরম পথ নির্দিষ্ট করতে দেয়।


4
অনুগ্রহ করে Eclipse আরম্ভ করার সময় আপনি কীভাবে System.load () কে প্রোগ্রামিমে কল করবেন?
whaefelinger

2

https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 বলেছে যে Eclipse এর প্রবর্তকটিতে কোনও বিকল্প প্রতিস্থাপন প্রয়োগ করা হয়নি, জুনোকে মুক্তি দেওয়ার জন্য কমপক্ষে কোনও আপত্তি নেই।

সুতরাং ডিফল্ট সেটিংসের পূর্বের জ্ঞান ছাড়াই গ্রহনটি আরম্ভ করার সময় java.library.path এ অন্য লাইব্রেরি ফোল্ডার যুক্ত করা বা প্রিপেন্ড করা প্রায় (প্রায়) অসম্ভব।

আমি প্রায় লিখেছি, কারণ এ্যালিপ্সের সূচনা হওয়া, জাভা.লিবেরি.পথের বিষয়বস্তু ফেলে দেওয়া এবং একটি কমান্ডে গ্রহন বন্ধ করা সম্ভব হওয়া উচিত। ডাম্পটি পার্স করা হবে এবং তারপরেই Eclipse চালু করার জন্য ইনপুট হিসাবে গ্রহণ করা হবে, অর্থাৎ

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"

1

ইউনিক্স সিস্টেমে আপনি LD_LIBRARY_PATH এনভায়রনমেন্ট ভেরিয়েবলে যুক্ত করতে পারেন। উইন্ডোজে, জেভিএম স্বয়ংক্রিয়ভাবে সিস্টেমের সম্পত্তি, java.library.path, PATH তে সেট করে; সুতরাং যদি dll আপনার PATH এ থাকে তবে আপনি সেট হয়ে গেছেন।


দ্বিতীয় নেটিভ লাইব্রেরি ফোল্ডারটি কীভাবে "সংযোজন" করবেন তা সম্পর্কে থ্রেড স্টার্টার খুব সুনির্দিষ্ট ছিলেন, আপনি কি একমত নন?
whaefelinger

@ ব্যবহারকারী 667073 আমি একই কথা বলছি ... সংযোজন করা প্রশ্নটি হচ্ছে, থ্রেড-স্টার্টার ইতিমধ্যে জেনেছেন কীভাবে একটি ভাগ করা
পাছা

এসটিএস ৩.৪.০ এবং ম্যাক ওএস ১০.৮: এলডি_লিবারি_প্যাথের সেটিংস জাভা.লিবারিয়ান.পাথের উপর কোনও প্রভাব ফেলবে না। আমি এটি সাবক্লিপ / জাভাএইচএল দিয়ে পরীক্ষা করেছি। এটির একটি কাজ করেছে: এসটিএস --launcher.appendVmargs -vmargs -Djava.library.path = / opt / স্থানীয় / lib রফতানি করার সময় LD_LIBRARY_PATH = / opt / স্থানীয় / lib; এসটিএস নেতিবাচক ছিল।
whaefelinger

1

উইন্ডো-> পছন্দসমূহ-> জাভা-> ইনস্টল করা জেআরই। তারপরে আপনার বর্তমান জেআরই (জেডিকে) চয়ন করুন এবং সম্পাদনা ক্লিক করুন। ডিফল্ট ভিএম যুক্তিগুলি পূরণ করুন: -ডাভা.লিবারিয়ান.পাথ = / ইউএসআর / স্থানীয় / এক্সগ্লগার / লাইব। সম্পন্ন!


4
এই উত্তরটি অনর্থক কারণ থ্রেড স্টার্টার বিশেষত "ওভাররাইডিংয়ের পরিবর্তে একটি স্থানীয় গ্রন্থাগার কীভাবে যুক্ত করবেন [..]" সম্পর্কে জিজ্ঞাসা করেছেন। এই উত্তরটি কেবল ডিফল্ট সেটিংসকে ওভাররাইড করে।
তিমি

1

উপরের একটি মন্তব্যে রব এলসনার প্রস্তাবিত সমাধানটি পুরোপুরি কার্যকর হয় (ওএসএক্স 10.9, এক্সপ্লিস কেপলার)। ":" দ্বারা পৃথক পৃথককে তাদের অতিরিক্ত পাথ যুক্ত করতে হবে।

আপনি $ {system_property: java.library.path} - রব এলসনার নভেম্বর 22 '10 এ 23:01 এও ব্যবহার করতে পারেন


0

নেটিভ লাইব্রেরি ফাইলের নামটি জার ফাইলের নামের সাথে সামঞ্জস্য করে। এটি খুব গুরুত্বপূর্ণ। দয়া করে নিশ্চিত করুন যে জারের নাম এবং dll নাম একই। এছাড়াও, দয়া করে ফ্যাবিয়ান স্টেগের পোস্টটি দেখুন জওয়িনের জন্য আমার ডাউনলোডে dll এবং জারের বিভিন্ন নাম ছিল। এটি jawin.jar এবং jawin d। Dll ছিল, dll ফাইলের নামে অতিরিক্ত 'd' নোট করুন। পোস্টটি " http://www.eclipsezone.com/eclipse/forums/t49342.html " তে উল্লিখিত গ্রন্থে আমি এটিকে কেবল jawin.dll এ নামকরণ করেছি এবং এটি একটি গ্রীক গ্রন্থে একটি স্থানীয় গ্রন্থাগার হিসাবে সেট করেছি "


প্রশ্নটি হলগ্রহের সূচনাতে নেটিভ লাইব্রেরি (ফোল্ডার) যুক্ত করার বিষয়ে।
হোয়াইটলিংগার

0

কোনও কারণে আমি একাধিক ফোল্ডারগুলি কাজ করতে পেলাম না (এটি বেশ কিছুক্ষণের জন্য হয়েছিল তবে যত তাড়াতাড়ি আমার আরও dlls প্রয়োজন এবং আরও ফোল্ডার যুক্ত করা হয়েছে, পথে সাদা জায়গাগুলি নেই) আমি তখন একটি প্রয়োজনীয় ফর্মটি একটি ফোল্ডারে অনুলিপি করেছিলাম এবং এটি আমার java.library.path হিসাবে পেয়েছি এবং এটি এবং এটি কাজ করে। আমার কোনও ব্যাখ্যা নেই - যদি কেউ করেন তবে দুর্দান্ত হবে।


ঠিক আছে, যদি কোনও নেটিভ লাইব্রেরি java.library.path এর মাধ্যমে পাওয়া যায় এবং আপনি অন্য একটিটিকে সেই ফোল্ডারে অনুলিপি করেন তবে দ্বিতীয়টিও পাওয়া যায় এটি স্বাভাবিক বলে মনে হয়, তাই না?
whaefelinger

অবশ্যই, এই কারণেই আমি এটি ব্যবহার করেছি, দুহ! আমি যা ভাবছিলাম তা হ'ল যে কেউ স্টাফগুলি সরানো বা সিমলিংক না করেই এতে একাধিক ফোল্ডার যুক্ত করতে পারে।
উস্তামান সংগীত

0

বিদ্যমান উত্তরগুলির মধ্যে অনেকগুলি ধরে নিয়েছে যে আপনি এটি একটি নির্দিষ্ট প্রকল্পের জন্য সেট করতে চান, তবে আমার এটি নিজেই গ্রহণের জন্য সেট করা দরকার ছিল এসকিউএল সার্ভার জেডিবিসি ড্রাইভারের জন্য সংহত প্রমাণীকরণের জন্য আমার এটি ।

এটি করার জন্য, আমি জাভা কমান্ডলাইন থেকে এর স্বাভাবিক লঞ্চারের পরিবর্তে গ্রহনটি চালু করার জন্য এই নির্দেশাবলী অনুসরণ করেছি । তারপরে আমি আমার স্ক্রিনটি জাভা কমান্ডলাইনে আমার -Djava.library.path যুক্তি যুক্ত করার জন্য কেবল সেই স্ক্রিপ্টটি সংশোধন করেছি।


0
  1. উইন্ডোজে: পাঠ্য পরিবেশের পরিবর্তনশীল লাইব্রেরিতে পাথ যুক্ত করুন।
  2. লিনাক্সে: লাইব্রেরিতে পাথ যুক্ত করুন LD_LIBRARY_PATH পরিবেশ পরিবর্তনশীল।
  3. ম্যাক-তে: DYLD_LIBRARY_PATH এনভায়রনমেন্ট ভেরিয়েবলের লাইব্রেরিতে পাথ যুক্ত করুন।

java.library.path এটি সম্পর্কিত প্ল্যাটফর্মের উপরের ভেরিয়েবলের মানগুলির সাথে সূচনা করা হয়।

এটি কোনও আইডিইতে কাজ করা উচিত।

কলটি করার মাধ্যমে মানটি যা প্রত্যাশা করে তা আপনি পরীক্ষা করতে পারেন java -XshowSettings:properties


-2

উইন্ডোজে, আমি খুঁজে পেয়েছি যে গুরুত্বপূর্ণ বিষয় হ'ল সূচনা মেনু বা শর্টকাট না দিয়ে কমান্ড লাইন থেকে Elpipse শুরু করা, যদি আপনার প্যাথের কোনও ডিরেক্টরিতে নেটিভ ডিএলএল থাকে provided স্পষ্টতই, এটি নিশ্চিত করে যে সঠিক ডিরেক্টরিটি পথে রয়েছে।


আমি ভুল হলে আমাকে সংশোধন করুন তবে আমি বিশ্বাস করি যে ডিএলএলগুলি (বা এক্সিকিউটেবল বাইনারি) অনুসন্ধান করার সময় উইন্ডোজে বর্তমান ওয়ার্কিং ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়ে যায়। সুতরাং আপনি যখন ডিএলএলগুলি ফোল্ডারে পরিবর্তন করেন এবং শুরু করেন তখন গ্রহনটি, তখন হ্যাঁ, আপনি যে ডিএলএল সন্ধান করছেন তা পাওয়া যায়। তা বাদে এই উত্তরটি থ্রেড স্টার্টার্স প্রশ্নের সাথে কীভাবে সম্পর্কিত?
তিমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.