.Jar ফাইল থেকে ক্লাস কীভাবে ব্যবহার করবেন?


134

আমি সান জাভা ফাইলগুলির জন্য জাভা টিউটোরিয়ালগুলি পড়েছি, তবে আমি এখনও আমার সমস্যার সমাধান খুঁজে পাই না। আমার জেটিউইটার.জার নামে একটি জার ফাইল থেকে একটি ক্লাস ব্যবহার করা দরকার, আমি ফাইলটি ডাউনলোড করে এটিকে কার্যকর করার চেষ্টা করেছি (গতকাল আমি জানতে পেরেছিলাম যে .jar ফাইলগুলি তার উপর ডাবল ক্লিক করে সম্পাদন করা যেতে পারে) এবং ভিস্তা আমাকে বলে ত্রুটি দিয়েছে " [পথ] /jtwitter.jar "থেকে মূল-শ্রেণীর ম্যানিফেস্ট বৈশিষ্ট্যটি লোড করতে ব্যর্থ হয়েছে।

যে লোকটি .jar ফাইলটি কোড করেছিল সে আমাকে এটি আমদানি করতে চায় তবে আমার কোডটিতে আমদানি করার জন্য আমি .jar ফাইলটি কোথায় সঞ্চয় করব? আমি .jar ফাইল এবং আমার। জাভা ফাইল দুটি একই ডিরেক্টরিতে রেখে দেওয়ার চেষ্টা করেছি, কাজ হয়নি।

আমি যে ফাইলটির জন্য কাজ করার চেষ্টা করছি সেগুলি এখানে: http://www.winterwell.com/software/jtwitter.php

আমি জ্যাক্রিটর এলই ব্যবহার করছি।


13
সেখানে ডাউনটাওয়েট কেন? আমার মতে, এটি একটি ভাল প্রশ্ন এবং উত্তরগুলিতে আকর্ষণীয় তথ্য রয়েছে! (+1)
গেরদা

উত্তর:


34

প্রতিটি জার ফাইল কার্যকর হয় না।

এখন, আপনার জাভা ফাইলে আপনার ক্লাসগুলি, জারের নীচে রয়েছে, আমদানি করতে হবে। উদাহরণ স্বরূপ,

import org.xml.sax.SAXException;

আপনি যদি কোনও আইডিইতে কাজ করছেন তবে আপনার এটির ডকুমেন্টেশনগুলি উল্লেখ করা উচিত। বা কমপক্ষে আপনি এই থ্রেডটিতে কোনটি ব্যবহার করছেন তা নির্দিষ্ট করে দিন। এটি অবশ্যই আপনাকে আরও সাহায্য করতে সক্ষম করবে।

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

java -jar my_program.jar

আপনার একটি META-INF/MANIFEST.MFফাইল থাকা উচিত jar। কীভাবে তা করার জন্য এখানে দেখুন ।


পুরাতন, আমি জানি, তবে আসলে কোনও importকিছুর দরকার নেই - এটি কেবলমাত্র শ্রেণীর ব্যবহৃত ক্লাস নামটি লেখার জন্য এড়িয়ে যায়, কেবল সাধারণ শ্রেণীর নাম ( SAXException)
নামধারী স্থানটি

173

ধরা যাক Classnameজার ফাইলটিতে থাকা শ্রেণিটি আমাদের ব্যবহার করা উচিতorg.example.jar

এবং আপনার উত্সটি mysource.javaএই ফাইলটিতে রয়েছে :

import org.example.Classname;

public class mysource {
    public static void main(String[] argv) {
    ......
   }
}

প্রথমে, আপনি যেমন দেখেন, আপনার কোডে আপনাকে ক্লাসগুলি আমদানি করতে হবে। এটি করতে আপনার প্রয়োজনimport org.example.Classname;

দ্বিতীয়ত, আপনি উত্সটি সংকলন করার সময়, আপনাকে জার ফাইলটি উল্লেখ করতে হবে।

সংকলন করার সময় :এবং ব্যবহারের পার্থক্যটি নোট করুন;

  • আপনি যদি অপারেটিং সিস্টেমের মতো ইউনিক্সের অধীনে থাকেন:

    javac -cp '.:org.example.jar' mysource.java
  • আপনি যদি উইন্ডোসের নিচে থাকেন:

    javac -cp .;org.example.jar mysource.java

এর পরে, আপনি বাইটকোড ফাইলটি পাবেন mysource.class

এখন আপনি এটি চালাতে পারেন:

  • আপনি যদি অপারেটিং সিস্টেমের মতো ইউনিক্সের অধীনে থাকেন:

    java -cp '.:org.example.jar' mysource
  • আপনি যদি উইন্ডোসের নিচে থাকেন:

    java -cp .;org.example.jar mysource

4
আপনি এই স্বরলিপি আরও কিছুটা ব্যাখ্যা করতে পারেন? এটি আমার সমস্যাটিকে স্থির করেছে, তবে দুর্ভাগ্যক্রমে আমার কোনও আইডিইএ নেই যা এই বিশেষ ক্ষেত্রে সেমিকোলন / কোলন মানে।
কবর দিন

2
এই সেমিকোলন / কোলন গল্পটি আমাকে পুরো দিনটি সবেমাত্র আকর্ষণ করেছিল। কমপক্ষে আমি এখন এটি খুঁজে পেয়েছি, ধন্যবাদ!
ম্যাক্সিম জুবরেভ

1
@ চেজমিডারস সেমিকোলন / কোলন মূলত এখানে "এবং" এর অর্থ। এটি .থেকে আলাদা হচ্ছে org.example.jar
duozmo

আপনি যদি স্কিমিং করে থাকেন তবে বেশিরভাগ *PATHভেরিয়েবলের মধ্যে একটি পার্থক্যটি মনোযোগ দিন : .jar ফাইলগুলি পৃথকভাবে নামকরণ করা দরকার
duozmo

15

আপনার ক্লাসপথে জার ফাইল যুক্ত করতে হবে। আপনার জাভা ক্লাস সংকলন করতে:

javac -cp .;jwitter.jar MyClass.java

আপনার কোড চালানোর জন্য (মাইক্লাসে একটি প্রধান পদ্ধতি রয়েছে এমন শর্ত রয়েছে):

java -cp .;jwitter.jar MyClass

আপনার যে কোনও জায়গায় জার ফাইল থাকতে পারে। জার ফাইলটি আপনার জাভা ফাইলের একই ডিরেক্টরিতে থাকলে উপরের কাজ।


7

আপনার কোডটি সংকলন / চালানোর সময় আপনার .par ফাইলটি আপনার শ্রেণিপথের মধ্যে রাখতে হবে। তারপরে আপনি খালি ক্লাসের মানক আমদানিগুলি ব্যবহার করুন।


6

ওয়ার্কম্যাড 3 যেমন বলেছে, আপনার ক্লাসপথে থাকতে আপনার জার ফাইলের দরকার need আপনি যদি কমান্ডলাইন থেকে সংকলন করেন, তার অর্থ ক্লাসপাথ পতাকা ব্যবহার করা। (ক্লাসস্প্যাট পরিবেশের পরিবর্তনশীল এড়ান; এটি ঘাড়ের আইএমওতে ব্যথা হয়))

আপনি যদি কোনও আইডিই ব্যবহার করছেন তবে দয়া করে আমাদের কোনটি জানান এবং সেই আইডিই সম্পর্কিত নির্দিষ্ট পদক্ষেপগুলি আপনাকে আপনাকে সহায়তা করতে পারি।


আপনি যদি অ্যাপ্লিকেশন চালানোর জন্য স্ক্রিপ্ট বা ফায়ারডেমনের মতো কিছু ব্যবহার করেন তবে ক্লাসপাথ এনভি ভেরিয়েবল কার্যকর। আপনি যখন এটি বিশ্বব্যাপী ব্যবহার করেন তখন কেবলমাত্র ব্যথা হয় :)
workmad3

আমি এখনও এটি স্পষ্টভাবে দেখতে চাই।
জন স্কিটি

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