উবুন্টুতে একটি ফোল্ডারের জন্য কীভাবে CLASSPATH ভেরিয়েবল সেট করুন


16

আমি জানি যে export CLASSPATH=/usr/local/java/tools.jar:$CLASSPATHক্লাসস্প্যাটে টুলস.জার যুক্ত হবে, তবে আমি ক্লাসস্প্যাটে ফোল্ডারটি সেট করতে চাই

এটার মত

export CLASSPATH=/usr/local/java/lib/:$CLASSPATH

কিন্তু এটি কাজ করে না।

উত্তর:


11

প্রথমত, সাধারণভাবে এনভির ভার সেট করা CLASSPATHতার সমাধানের চেয়ে বেশি সমস্যার কারণ হয় - যেহেতু সমস্ত অ্যাপ্লিকেশনকে একই শ্রেণিপথের প্রয়োজন / প্রয়োজন হয় না, এবং প্রায়শই অনাকাঙ্ক্ষিত বা এমনকি অপ্রয়োজনীয় জারগুলি ক্লাসপথে অন্তর্ভুক্ত করার পরে ভেঙে যায়। একটি জাভা অ্যাপ্লিকেশনটিতে কেবলমাত্র প্রয়োজনীয় নূন্যতম সংখ্যার জার অন্তর্ভুক্ত করা উচিত, আর বেশি নয়, কমও নয়।

আপনি নির্দিষ্ট আছে, যে ব্যক্তি অ্যাপ্লিকেশান প্রয়োজন ক্লাসপাথ নির্ধারণ করা যে, তারপর সাধারণত কম্যান্ড-লাইন বিকল্প পছন্দ করা হয়: java -cp path1:path2:...। ডেস্কটপ আইকনগুলিতে এই বিকল্পগুলি অন্তর্ভুক্ত করার জন্য তাদের কমান্ডটি পরিবর্তন করা যেতে পারে, বা এই বিকল্পগুলি অন্তর্ভুক্ত করতে শেল স্ক্রিপ্টগুলি পরিবর্তন করা যেতে পারে।

এটি বলা হচ্ছে (এবং যেহেতু নিয়মের ক্ষেত্রে সর্বদা ব্যতিক্রম রয়েছে), তারপরে জাভা সংস্করণের উপর নির্ভর করে (এটি জাভা or বা তার পরে চিহ্নিত করে) আপনি জারগুলির একটি সম্পূর্ণ ডিরেক্টরি ক্লাসপথে যুক্ত করে নির্দিষ্ট করতে পারেন " *" একটি ডিরেক্টরি শেষে; যেমন, নিম্নলিখিত:

 /dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...

মাধ্যম:

  • /dir1/foo.jar - (একক জারে) ক্লাসপথে যুক্ত করা হবে;
  • /dir2/dir3- এই ডিরেক্টরিতে সমস্ত জার-ডি ক্লাস ক্লাসপথে যুক্ত করা হবে (যথাযথ প্যাকেজ কাঠামোতে com.my.Foo.classথাকতে হবে ; যেমন, অবশ্যই এতে থাকতে হবে /dir2/dir3/com/my/Foo.class)
  • /dir5/dir6/*- এই ডিরেক্টরিতে (অর্থাত্ /dir5/dir6/*.jar) সমস্ত জারগুলি ক্লাসপথে যুক্ত করা হবে। মনে রাখবেন যে এটি " *" ওয়াইল্ডকার্ড নয় (আপনি ব্যবহার করতে পারবেন না f*.jarএমনকি এটিও করতে পারবেন না *.jar); এটি একটি বিশেষ চরিত্র যা "সমস্ত বয়াম যুক্ত করুন" নির্দেশ করে

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


এটি উবুন্টু ১২.০৪-তে এটি নির্ধারণ করতে আমার 5 ঘন্টারও বেশি সময় লাগে। আপনি একটি ফাইল সংকলন এবং ক্লাস চালানোর পরে, দুটি জিনিস গুরুত্বপূর্ণ। 1. আপনি আপনার ক্লাসে প্যাকেজ ব্যবহার করুন কিনা। এবং আপনাকে প্যাকেজ প্যারেন্ট ফোল্ডারে "java -cp। ClassName" ব্যবহার করতে হবে। 2. আপনাকে অবশ্যই "।:" ব্যবহার করতে হবে "জাভা-সিপি।: / Usr / lib / jvm / java-1.6.0-openjdk-i386 / জেআর / lib / *: / dir2 / jarlib / *"।
জিহিং

@ জিহং আপনার নেটবিনের মতো আইডিই ব্যবহার করা বিবেচনা করা উচিত, এটি ব্যবহারের ক্ষেত্রে বিল্ড টুলকে পিছিয়ে দেওয়া উচিত, যা আসলে আপনার ক্লাসপথটি কনফিগার করে। নেটবিনে মাভেন বা গ্রেডেল (বা পিপীলিকা - ব্যবহার করে একটি নতুন প্রকল্প স্থাপন করুন) তবে নির্ভরতা নিয়ে কাজ করার সময় এটি খুব জটিল হয়ে যায় (এটিও দেখুন: মভেন পিঁপড়ার কাজগুলি, যা আমি আইভির চেয়ে বেশি পছন্দ করি))। গ্রেডল বর্তমানে 'হট' জিনিস, নতুনভাবে; আপনার এটি করা উচিত। এছাড়াও, (1) আপনার সর্বদা প্যাকেজের নাম ব্যবহার করা উচিত; এবং (2) ক্লাসপথে jvm ডিরেক্টরিতে ক্লাস অন্তর্ভুক্ত করার প্রয়োজন নেই; তারা ইতিমধ্যে "বুট" শ্রেণিপথে রয়েছে।
মাইকেল 21

আপনার পরামর্শের জন্য ধন্যবাদ. প্রকৃতপক্ষে, আমিগ্রহণটি ব্যবহার করি এবং কোডটি সঠিকভাবে সেখানে চলে, তবে আমি যখন এটি টার্মিনালে চালাই, তারপরে "ClassNotFoundException" পেয়ে গেল। আমি বহিরাগত lib / jar যুক্ত করার জন্য অনেক উপায়ে চেষ্টা করেছি, তবে সমস্ত ব্যর্থ হয়েছিল। পরিশেষে, এটি jvm ডিরেক্টরি এবং বহিরাগত lib / jar কমান্ড লাইনে WITH লাইনে অন্তর্ভুক্ত করে কাজ করে। তবে, আমি আজ চেষ্টা করেছি, আপনি সঠিক, jvm ডিরেক্টরি প্রয়োজন নেই।
জিহং

2

আপনি যদি স্থায়ীভাবে ক্লাসপথ সেট করতে চান তবে 1) কোথায় জাভা ইনস্টল করা আছে তা সন্ধান করুন .. আপনি "হোথিস জাভা" ওপেনডেডক -7 / 6 / usr / lib / jvm / ..... এ ব্যবহার করতে পারেন

2) আমাদের / ইত্যাদি / পরিবেশে CLASSPATH সেটআপ করা দরকার

  sudo gedit /etc/environment

3) নিম্নলিখিত পছন্দগুলি যুক্ত করুন .. (যেকোন স্থানের টাইপ ছেড়ে যাবেন না) (আপনার জাভা সংস্করণ এবং ইনস্টলেশন অনুসারে কাস্টমাইজ করুন) (এই হোম পাথটি ওপেন জেডিকে 7 এর জন্য)

   JAVA_HOME="/usr/lib/jvm/java-7-openjdk-i386/bin"

   export JAVA_HOME

   CLASSPATH=".:/usr/lib/jvm/java-7-openjdk-i386/lib:/home/laptop/Desktop/a2"

   export CLASSPATH

":" দ্বারা পৃথক ডিরেক্টরি


সবাই কেন তাদের ক্লাসপথে "{জাভাহোহোম} / লিবিব" যুক্ত করছে? এটি প্রয়োজনীয় নয়, এমনকি একটি ভাল ধারণাও নয়। এই বিষয়টির জন্য, এনএভিএস ক্লাসস্প্যাথ নির্ধারণ করাও একটি খারাপ ধারণা, যদি না এটি শেল স্ক্রিপ্টে থাকে তবে কেবল সেই স্ক্রিপ্টটির ক্ষেত্রে, জাভাতে কমান্ড-লাইন বিকল্প "-cp" তবুও পছন্দনীয় হবে।
মাইকেল 21

0

খোলার টার্মিনাল এবং প্রকার

sudo ন্যানো। / .bashrc

আপনার প্রয়োজন মতো সমস্ত রফতানি যুক্ত করুন ...

JAVA_Home = / usr / স্থানীয় / জাভা / jdk1.6.0_06 রফতানি করুন (আপনার পথ)

এএনT_ হোম = / অপ্ট / পিঁপড়া / অ্যাপাচি-পিঁপড়া -1.9. রফতানি করুন

পরিবর্তনগুলি কার্যকর হওয়ার জন্য অবশেষে পুনরায় চালু করুন rest

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.