কিভাবে একটি JAR ফাইল চালাতে হয়


207

আমি এই জাতীয় একটি JAR ফাইল তৈরি করেছি:

jar cf Predit.jar *.*

আমি এই জেআর ফাইলটি এটিতে ডাবল ক্লিক করে চালিয়েছি (এটি কার্যকর হয়নি)। সুতরাং আমি এটি ডস প্রম্পট থেকে এটি চালিয়েছি:

java -jar Predit.jar

এটি "মূল শ্রেণীর লোড করতে ব্যর্থ" ব্যতিক্রম উত্থাপন করেছে। সুতরাং আমি এই জেআর ফাইলটি বের করেছি:

jar -xf Predit.jar

এবং আমি ক্লাস ফাইল চালিয়েছি:

java Predit

এটা ভাল কাজ করে। জেআর ফাইল কেন কাজ করল না জানি না। দয়া করে আমাকে জেআর ফাইল চালানোর পদক্ষেপগুলি বলুন

উত্তর:


207

জার ফাইল ম্যানিফেস্টে আপনাকে একটি মেইন-ক্লাস নির্দিষ্ট করতে হবে।

ওরাকল এর টিউটোরিয়ালে একটি সম্পূর্ণ প্রদর্শন রয়েছে তবে স্ক্র্যাচ থেকে এখানে অন্যটি রয়েছে। আপনার দুটি ফাইল দরকার:

Test.java:

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Hello world");
    }
}

manifest.mf:

Manifest-version: 1.0
Main-Class: Test

নোট করুন যে পাঠ্য ফাইলটি অবশ্যই একটি নতুন লাইন বা ক্যারেজ রিটার্নের সাথে শেষ হবে। নতুন লাইন বা ক্যারেজ রিটার্ন দিয়ে শেষ না হলে শেষ লাইনটি সঠিকভাবে পার্স করা যাবে না।

তারপরে চালান:

javac Test.java
jar cfm test.jar manifest.mf Test.class
java -jar test.jar

আউটপুট:

Hello world

1
যদি টেস্ট ক্লাসটি জার ফাইলের মাধ্যমে অন্য শ্রেণি বোঝায়, সে ক্ষেত্রে কী পরিবর্তন করা উচিত?
আনন্দ

@ এবং তারপরে আপনাকে আপনার ম্যানিফেস্টে একটি শ্রেণিবদ্ধ লাইন অন্তর্ভুক্ত করতে হবে এবং অন্যান্য জারগুলি উল্লেখ করতে হবে। docs.oracle.com/javase/tutorial/deployment/jar/downman.html
ডাকাতি

এই প্রশ্নে দয়া করে আমাকে সহায়তা করুন: stackoverflow.com/questions/24740803/…
সাজাদ

আমি মনে করি ম্যানিফেস্ট-সংস্করণ: 1.0 থাকা আবশ্যক নয় কারণ প্রদত্ত ম্যানিফেস্ট ফাইলের বিষয়বস্তু ডিফল্ট ম্যানিফেস্ট ফাইলে সংযুক্ত হয়ে গেছে যা ইতিমধ্যে সংস্করণটি ডক্স.ওরাকল
জর্জি ওলেইনিকভ

2
এটি ঠিক শেষ থেকে শেষের নমুনা। নিখুঁত সহজ খাস্তা। আমি ঘন্টার পর ঘন্টা এরকম কিছু খুঁজছিলাম। কীভাবে "হ্যালো ওয়ার্ল্ড" জাভা জার তৈরি করবেন তা অনুসন্ধান করার সময় কেন পুরো ইন্টারনেট যেমন কোনও সাধারণ উদাহরণ ছাড়াই সমস্ত আবর্জনায় পূর্ণ। অনেক অনেক ধন্যবাদ.
অতুল

58
java -classpath Predit.jar your.package.name.MainClass

যদি এই জারটি অন্যান্য জারগুলি ব্যবহার করে, ক্লাসপথটি "/ পথ / থেকে / জার্স / *" এর মতো হওয়া উচিত নয়?
ম্যাক্সিম চেত্রুসকা

5
@Max Chetrusca হ্যাঁ কিন্তু বিভাজক হয় :ব্যবহার *কাজ করবে না কেননা আপনার শেল ভালো এটি প্রসারিত হবে: "/path/to/jars/a.jar" "/path/to/jars/b.jar"কিন্তু আপনি কি সত্যিই চাই: "/path/to/jars/a.jar:/path/to/jars/b.jar"
লিঞ্চ

29

চালানোর আগে জার চেকটি MANIFEST.MF ফাইলে Main-Class: classnameপাওয়া যায় বা না । MANIFEST.MF জারে উপস্থিত রয়েছে।

java -jar filename.jar

16

আপনাকে জারটিতে একটি ম্যানিফেস্ট যুক্ত করতে হবে, যা জাভা রানটাইমকে জানায় যে প্রধান শ্রেণিটি কী। নিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল 'ম্যানিফেস্ট.এমএফ' তৈরি করুন:

Manifest-Version: 1.0
Main-Class: your.programs.MainClass

আপনার প্রকৃত প্রধান শ্রেণিতে 'your.program.MainClass' পরিবর্তন করুন। এখন জার-ফাইলটিতে ফাইলটি রাখুন, 'মেটা-আইএনএফ' নামে একটি সাবফোল্ডারে। আপনি তার জন্য যে কোনও জিপ-ইউটিলিটি ব্যবহার করতে পারেন।


1
কৌতূহল কেবল, 'মেটা-ইনফ' সাবফোল্ডার নামের সংবেদনটি কি সংবেদনশীল? আমি traditionতিহ্যগতভাবে এটি 'মেটা-আইএনএফ' বানান দেখেছি
অ্যাডাম পেইন্টার

তুমি ঠিক বলছো. অনুমানটি "মেটা-আইএনএফ" বলে এবং মামলার সংবেদনশীলতা সম্পর্কে কিছুই বলে না ( java.sun.com/j2se/1.4.2/docs/guide/jar/… )
ফ্লোরিয়ান

12

.Class, .jar ফাইলটি তৈরি করার জন্য খুব সহজ পদ্ধতির।

জার ফাইলটি কার্যকর করা হচ্ছে। মেনিফেস্ট ফাইল সম্পর্কে খুব বেশি চিন্তা করার দরকার নেই। এটি সহজ এবং অভিজাতীয় করুন।

জাভা নমুনা হ্যালো ওয়ার্ল্ড প্রোগ্রাম

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

ক্লাস ফাইল সংকলন

javac HelloWorld.java

জার ফাইল তৈরি করা হচ্ছে

jar cvfe HelloWorld.jar HelloWorld HelloWorld.class

অথবা

jar cvfe HelloWorld.jar HelloWorld *.class

জার ফাইল চালাচ্ছি

 java -jar HelloWorld.jar

অথবা

java -cp HelloWorld.jar HelloWorld

হ্যাঁ, jarএর বিকল্পটি eআপনাকে Main-Class( এন্ট্রিপয়েন্ট ) নির্দিষ্ট করতে দেয় এবং আপনার জন্য একটি প্রাসঙ্গিক ফাইল তৈরি করে। জারের জন্য সরকারী ডকুমেন্টেশন দেখুন ।
পেটর বোদনার

11

আপনি যদি জার ফাইলটি চালানোর জন্য ম্যানিফেস্ট তৈরি করতে চান না, আপনি জার ফাইলটি চালানোর সময় আপনি সরাসরি কমান্ড লাইন থেকে মূল-শ্রেণীর রেফারেন্স করতে পারেন।

java -jar Predit.jar -classpath your.package.name.Test

জার ফাইলটিতে কোন প্রধান-শ্রেণীর চালানো হবে এটি সেট করে।


2
-classpathঠিক পরে আসে javaএবং পরিত্রাণ পান -jar(অর্থাত্ এই উত্তরটি ভুল)
পিট


3

আপনি যদি এই বিবরণগুলির সাথে ডিল করতে না চান তবে আপনি এক্সিলিপ বা নেটবিয়ান্স থেকে রফতানি জার সহায়কগুলিও ব্যবহার করতে পারেন।


3

Eclipse চলমানযোগ্য JAR ফাইল

একটি জাভা প্রকল্প তৈরি করুন - RunnableJAR

  • যদি কোনও জার ফাইল ব্যবহার করা হয় তবে তাদের প্রকল্পের নির্মাণের পথে যুক্ত করুন।
  • রান্নেবল জার ফাইল তৈরি করার সময় প্রধান ()যুক্ত শ্রেণি নির্বাচন করুন। এখানে চিত্র বর্ণনা লিখুন

মেইন ক্লাস

public class RunnableMainClass {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("Name : "+args[0]);
        System.out.println(" ID  : "+args[1]);
    }
}

আর্গুমেন্ট সরবরাহ করে জাভা প্রোগ্রাম ( সেন্টিমিটার ) ব্যবহার করে জার ফাইল চালান এবং এক্সপ্লিট কনসোলে আউটপুট এবং প্রদর্শনটি পান।

public class RunJar { 
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws IOException {
        String jarfile = "D:\\JarLocation\\myRunnable.jar";
        String name = "Yash";
        String id = "777";

        try { // jarname arguments has to be saperated by spaces
            Process process = Runtime.getRuntime().exec("cmd.exe start /C java -jar "+jarfile+" "+name+" "+id);
                    //.exec("cmd.exe /C start dir java -jar "+jarfile+" "+name+" "+id+" dir");
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream ()));
            String line = null;
            while ((line = br.readLine()) != null){
                sb.append(line).append("\n");
            }
            System.out.println("Console OUTPUT : \n"+sb.toString());
            process.destroy();
        }catch (Exception e){
            System.err.println(e.getMessage());
        }
   }
}

গ্রহনে শর্ট কাটগুলি সন্ধান করতে :

সহায়তা ► সহায়তা বিষয়বস্তু ► জাভা উন্নয়ন ব্যবহারকারী গাইড guide তথ্যসূত্র ► মেনু এবং ক্রিয়া


3

আমার এই ফোল্ডারটির কাঠামো রয়েছে:

ডি: \ জাভাপ্রজেক্টস \ অলিভপ্রেস অ্যাপ \ কম \ লিন্ডা \ অলিভপ্রেস \ মেইনক্লাস ডি: \ জাভাপ্রজেক্টস \ অলিভপ্রেস অ্যাপ্লিকেশন \ কম \ লিন্ডা \ জলপাই \ টিপুন \ অলিভপ্রেসক্লাস ডি: \ জাভাপ্রজেক্টস \ অলিভপ্রেস অ্যাপ্লিকেশন \ কম ives জলপাই \ জলপাই .ক্লাস ডি: \ জাভাপ্রজেক্টস \ অলিভপ্রেস অ্যাপ \ কম \ লিন্ডা \ জলপাই ive জলপাই \ লিগুরিয়ানক্লাস ডি: \ জাভাপ্রজেক্টস \ অলিভপ্রেস অ্যাপ \ কম \ লিন্ডা \ জলপাই ive জলপাই \ অলিভ কোড

Main.class প্যাকেজে আছে com.lynda.olivepress

আরও দুটি প্যাকেজ রয়েছে:

com.lynda.olivepress.press

com.lynda.olivepress.olive

1) "Manifest.txt"টু লাইনের সাথে একটি ফাইল তৈরি করুন , প্রথমে মেইন-ক্লাস এবং দ্বিতীয় খালি লাইন দিয়ে।

Main-Class: com.lynda.olivepress.Main

ডি: \ JavaProjects \ OlivePressApp \ Manifest.txt

2) ম্যানিফেস্ট এবং মূল-শ্রেণীর এন্ট্রি পয়েন্ট সহ জেআর তৈরি করুন

ডি: \ JavaProjects \ OlivePressApp>jar cfm OlivePressApp.jar Manifest.txt com/lynda/olivepress/Main.class com/lynda/olivepress/*

3) JAR চালান

java -jar OlivePressApp.jar

দ্রষ্টব্য: com/lynda/olivepress/*মানে পয়েন্ট 1 এর আগে উপরে উল্লিখিত অন্য দুটি প্যাকেজ সহ)


-2

জার চালানোর জন্য প্রথমে আপনাকে তৈরি করতে হবে

এক্সিকিউটেবল জার

তারপর

java -jar xyz.jar

কমান্ড কাজ করবে

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