উইন্ডোজে দীর্ঘ জাভা ক্লাসপাট কিভাবে সেট করবেন?

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

set CLASS_PATH=C:\path\a\b\c;C:\path\e\f\g;....
set CLASS_PATH=%CLASS_PATH%;C:\path2\a\b\c;C:\path2\e\f\g;....
...
C:\apps\jdk1.6.0_07\bin\java.exe -client oracle.jdevimpl.junit.runner.TestRunner com.myco.myClass.MyTest testMethod

(অন্যান্য বৈচিত্রগুলি একটি লাইনে ক্লাসপাথ সেট করছে, জাভাতে একটি যুক্তি হিসাবে -ক্লাসপথের মাধ্যমে ক্লাসপাটে সেট করা হচ্ছে)। এটি সর্বদা কনসোলের নিচে আসে যাতে এই ত্রুটিটি দিয়ে হাতটি ছুঁড়ে ফেলা হয়:

The input line is too long.
The syntax of the command is incorrect.

এটি একটি JUnit পরীক্ষা একটি বরং বড় বিদ্যমান উত্তরাধিকার প্রকল্প পরীক্ষা, তাই আমার ডিরেক্টরি গঠন আরো যুক্তিসঙ্গত কিছু পুনর্চালনা সম্পর্কে কোন পরামর্শ, যারা ধরনের সমাধান এখন জন্য আউট হয়। আমি শুধু এই প্রকল্পের বিরুদ্ধে একটি দ্রুত পরীক্ষা জিন এবং কমান্ড লাইন এটি চালানোর চেষ্টা ছিল, এবং কনসোল আমাকে stonewalling হয়। সাহায্য করুন!

34

9 উত্তর

এই বিষয়ে উইন্ডোজ কমান্ড লাইন খুবই সীমিত। একটি কার্যধারা একটি "পাথর জার" তৈরি করা হয়। এটি শুধুমাত্র একটি ম্যানিফেস্ট.এমএফ ফাইলের একটি জার, যার <�কোড> ক্লাস-পাথ আপনার দীর্ঘ তালিকা বাক্সের ডিস্ক পাথ নির্দিষ্ট করে। এখন শুধু এই যোগ করুন আপনার কমান্ড লাইন ক্লাসপথ থেকে পাথিং বার এটি সাধারণত প্রকৃত সম্পদ প্যাকেজিং একসঙ্গে বেশি সুবিধাজনক।

আমি মনে করি, ডিস্ক পাথ নিজেই পাথিং বার আপেক্ষিক হতে পারে। তাই Manifest.mf এরকম কিছু দেখতে পারে:

Class-Path: this.jar that.jar ../lib/other.jar

যদি আপনার পাথিং জার প্রধানত মূলশব্দ সম্পদ আছে, তাহলে এটি খুব ঘন ঘন পরিবর্তন হবে না, তবে সম্ভবত আপনি আপনার নির্মাণে কোথাও এটি তৈরি করতে চান। উদাহরণ স্বরূপ:


  
    
  

49
যোগ
আমাকে কিছু করতে হবে, যেমন নিশ্চিত করুন যে এই কাঁটাটি লোড হয়? বা JVM কি এই ধরনের manifests জন্য বর্গ পথ দেওয়া সব বয়াম স্ক্যান করবে? এছাড়াও, এটা JVMs জুড়ে পোর্টেবল? এই সমর্থন করে জাভা সর্বনিম্ন সংস্করণ কি?
যোগ লেখক bacar, উৎস
ম্যানিফেস্ট ক্লাসপ্যাট টাস্ক সংস্করণ 1.7 থেকে এন্ট থেকে পাওয়া যায় একটি অ্যান্ট পাথ থেকে ক্লাস-পাথ অ্যাট্রিবিউটের জন্য একটি উপযুক্ত বৈশিষ্ট্য তৈরি করতে ব্যবহার করা যেতে পারে।
যোগ লেখক Matt Hurne, উৎস
আমি এটি চেষ্টা করেছি, কিন্তু Manifest.mf শুধুমাত্র সংশ্লিষ্ট URL গুলিকে অন্য JAR এবং ডিরেক্টরিগুলিতে অনুমতি দেয়।
যোগ লেখক xamde, উৎস
18
যোগ
এই "লিঙ্ক শুধুমাত্র উত্তর" মত মনে হয় আপনি যে সম্পর্কে যেতে কিভাবে আরো বিস্তারিত প্রদান করা উচিত
যোগ লেখক rghome, উৎস
আরে, এটা শান্ত - আমি জানিনা। এটি অবশ্যই একটি সহায়ক বিকল্প, বিশেষত যদি (আমাদের ক্ষেত্রে হিসাবে), শ্রেণীপথ জার্স পূর্ণ, যা অনেক একই ডিরেক্টরির মধ্যে হয়।
যোগ লেখক Ogre Psalm33, উৎস
এটি জাভা 6 এ নতুন বলে মনে হচ্ছে।
যোগ লেখক Chris Noe, উৎস
কিন্তু এই recursive traversing প্রদান করে না।
যোগ লেখক Snehal Masne, উৎস

(আমি মনে করি আপনি সত্যিই ডস মানে না, কিন্তু cmd.exe পড়ুন।)

আমি মনে করি এটি পরিবেশের আকার/পরিবেশের ভেরিয়েবলের আকার সীমা থেকে কম CLASSPATH সীমাবদ্ধতা। এক্সপিতে, পৃথক পরিবেশের ভেরিয়েবলগুলি আকারে 8 কিলোমিটার হতে পারে, পুরো পরিবেশ 64k পর্যন্ত সীমাবদ্ধ। আমি দেখতে পারি না যে আপনি যে সীমা আঘাত করবে

WindowsNT- এ এটি একটি কমান্ড লাইনের দৈর্ঘ্য নিয়ন্ত্রণ করে এমন উইন্ডোগুলির একটি সীমা আছে, এটি cmd.exe এর জন্য 8k। একটি সেট কমান্ড যে সীমাবদ্ধতা সাপেক্ষে। আপনার সেট কমান্ডের মধ্যে আপনার কাছে 8K এর বেশি ডিরেক্টরি আছে কি? আপনি সৌভাগ্য হতে পারে, তারপর - এমনকি যদি আপনি তাদের মত বিভাজক নিক বেরার্দি প্রস্তাবিত।

4
যোগ
ওহো, হ্যাঁ, পুরাতন স্কুলটি ভেতরে ঢুকে পড়েছে। হ্যাঁ, cmd.exe।
যোগ লেখক Ogre Psalm33, উৎস

আপনি তাদের স্ট্যাকিং চেষ্টা করেছেন?

set CLASS_PATH = c:\path
set ALT_A = %CLASS_PATH%\a\b\c;
set ALT_B = %CLASS_PATH%\e\f\g;
...

set ALL_PATHS = %CLASS_PATH%;%ALT_A%;%ALT_B%
2
যোগ
আমরা এই একটি দ্বি পার্থক্য চেষ্টা, কোন উপকারে। সিএমডি সব সমস্ত% ALT_A% বিকল্প হিসাবে মনে হয়, ইত্যাদি অন-মাছি এবং চূড়ান্ত পাথ বায়ু এটি হ্যান্ডেল জন্য খুব দীর্ঘ হচ্ছে, একই ত্রুটি আমাকে প্রদান।
যোগ লেখক Ogre Psalm33, উৎস

If I were in your shoes, I would download the junction utility from MS : http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx and then map your "C:\path" to say, "z:\" and "c:\path2" to say, "y:\". This way, you will be reducing 4 characters per item in your classpath.

set CLASS_PATH=C:\path\a\b\c;C:\path\e\f\g;
set CLASS_PATH=%CLASS_PATH%;C:\path2\a\b\c;C:\path2\e\f\g;

Now, your classpath will be :

set CLASS_PATH=z\a\b\c;z\e\f\g;
set CLASS_PATH=%CLASS_PATH%;y:\a\b\c;y:\e\f\g;

এটি আপনার প্রকৃত <�কোড> শ্রেণীপথ এর উপর নির্ভর করে আরো কিছু করতে পারে।

1
যোগ
এনটিএফএস এর জন্য জংশন একটি ফ্রন্ট-এন্ড। mklink/d অন্যটি ইতিমধ্যেই Windows এর পরবর্তী সংস্করণগুলির মধ্যে উপস্থিত হতে পারে।
যোগ লেখক mgaert, উৎস
mlink উইন্ডোজ 7 অন্তর্ভুক্ত করা হবে বলে মনে হচ্ছে না। জংশন উইন্ডো 7 (এন্টারপ্রাইজ) অংশ হিসাবে অন্তর্ভুক্ত করা হয়।
যোগ লেখক anjanb, উৎস

হুবার্টগেলে উল্লেখ করা হয়েছে, আমি এইটি একটি এন্ট বিল্ড স্ক্রিপ্টে আবদ্ধ করব যাতে আপনি এই সবগুলি পরিচালনা করতে পারেন না।

0
যোগ

আমি মনে করি আপনি এখানে একটি প্যাড ছাড়া খাদ আপ হয়। কমান্ড লাইনের একটি প্রোগ্রামম কল আর্গুমেন্ট জন্য একটি সীমা আছে।

আমি চেষ্টা করতে পারেন 2 sugestion আছে প্রথমে, জুনটি পরীক্ষা চালানোর আগে, আপনি স্ক্রিপ্ট/এন্টি_টাসকে ক্লাসপ্যাডে বিভিন্ন ক্লাসের JAR তৈরি করতে দিবেন। তারপর আপনি Jars ক্লাসপথে রাখতে পারেন, যা ছোট হতে হবে।

আরেকটি উপায় আপনি চেষ্টা করতে পারেন JUNIT চালানোর জন্য একটি অক্ষর তৈরি করা হয়, এন্টিতে ক্লাসপথ এন্ট্রিগুলির জন্য এমন একটি সীমা থাকা উচিত নয়।

0
যোগ

আপনি এই চেষ্টা করতে পারেন


@echo off
set A=D:\jdk1.6.0_23\bin
set B=C:\Documents and Settings\674205\Desktop\JavaProj
set PATH="%PATH%;%A%;"
set CLASSPATH="%CLASSPATH%;%B%;"

একটি কমান্ড প্রম্পট যান এবং এটি দুবার চালানো (কোন ধারণা কেন .... আমি একটি উইন্ডোজ এক্সপি মেশিনে তাই করতে হবে) এছাড়াও বর্তমান R কমান্ড প্রম্পট সেশনের জন্য শুধুমাত্র সেট গুলি

0
যোগ

"C: \ jars" এর মত একটি ফোল্ডারে জার ফাইলগুলিকে সরানোর দ্বারা কোনওভাবেই কোনও সমস্যা সমাধান করা যায় না।

0
যোগ
ত্রুটিপূর্ণ. অন্য একটি সমাধান ছিল, কিন্তু আপনি এটি কি ছিল না জানি না, বা আপনি এটি ব্যবহার না করার সিদ্ধান্ত নিয়েছে। যাইহোক, আপনি কি করেছেন স্পষ্টত একটি সমাধান ... যে কিছু পরিস্থিতিতে কাজ করতে পারে।
যোগ লেখক Stephen C, উৎস