আমি TMPপরিবেশের পরিবর্তনশীলগুলি জিনিসগুলি নিয়ন্ত্রণ করতে ব্যবহার করেছি যেখানে জিসিসি এটি অস্থায়ী ফাইলগুলি লেখেন তবে জাভার তৈরিটেম্পফিল এপিআইয়ের জন্য আমি কোনও সমতুল্য খুঁজে পাচ্ছি না ।
এই জাতীয় পরিবেশের পরিবর্তনশীল কি বিদ্যমান?
আমি TMPপরিবেশের পরিবর্তনশীলগুলি জিনিসগুলি নিয়ন্ত্রণ করতে ব্যবহার করেছি যেখানে জিসিসি এটি অস্থায়ী ফাইলগুলি লেখেন তবে জাভার তৈরিটেম্পফিল এপিআইয়ের জন্য আমি কোনও সমতুল্য খুঁজে পাচ্ছি না ।
এই জাতীয় পরিবেশের পরিবর্তনশীল কি বিদ্যমান?
উত্তর:
হুমম - যেহেতু এটি জেভিএম দ্বারা পরিচালিত হয়, আমি ওপেনজেডিকে ভিএম উত্স কোডটি কিছুটা ভেবেছিলাম, ভেবেছিলাম যে সম্ভবত জাভা and এবং এর আগে কী হয়েছে ওপেনজেডিকে নকল করেছে। এটি আশ্বাস দেয় না যে উইন্ডোজ ব্যতীত অন্য কিছু করার উপায় আছে।
উপর উইন্ডোজ , OpenJDK এর get_temp_directory()ফাংশন একটি Win32 API কল তোলে GetTempPath(); এইভাবে উইন্ডোজ, জাভা TMPপরিবেশের ভেরিয়েবলের মান প্রতিফলিত করে ।
উপর লিনাক্স এবং সোলারিস , একই get_temp_directory()ফাংশন একটি স্ট্যাটিক মান /tmp/।
আমি জানি না আসল জেডিকে 6 এই সঠিক কনভেনশনগুলি অনুসরণ করে কিনা তবে তালিকাভুক্ত প্ল্যাটফর্মগুলির প্রত্যেকটির আচরণের দ্বারা দেখে মনে হয় তারা তা করে।
-Djava.io.tmpdirজেভিএম-তে কমান্ড লাইন বিকল্পের মাধ্যমে ), এবং যদি সেই ডিফল্ট মানটি এখানে প্রভাবিত হয় সমস্ত একটি পরিবেশগত মান দ্বারা। হিসাবে মানুষ পরিলক্ষিত হয়েছিল, উইন্ডোজ তে এটি করা হয় দ্বারা প্রভাবিত TMPএনভায়রনমেন্ট ভেরিয়েবল, কিন্তু এটা স্পষ্ট ছিল যদি অন্যান্য অপারেটিং সিস্টেমের জন্য কিছু অজানা পরিবর্তনশীল ছিল। দেখে মনে হচ্ছে সেখানে নেই, অন্তত ওপেনজেডিকে সম্পর্কে আমরা যা জানি তা দেওয়া হয়েছে।
GetTempPath()শুধু দ্বারা প্রভাবিত হয় না TMPএনভায়রনমেন্ট ভেরিয়েবল: msdn.microsoft.com/en-us/library/aa364992%28VS.85%29.aspx
/var/tmp/(শীর্ষস্থানীয় স্ল্যাশ সহ) রয়েছে, তার জন্য এখানে বাগ # 4391434 রয়েছে । এবং ম্যাক ওএস এবং লিনাক্সের জন্য এটি/tmp - কী গোলমাল!
oracle-java8-jdk=8u102(লিনাক্স) নিয়ে কাজ করেন
জাভা ডক্স অনুসারেjava.io.File
ডিফল্ট অস্থায়ী-ফাইল ডিরেক্টরি সিস্টেম সম্পত্তি java.io.tmpdir দ্বারা সুনির্দিষ্ট করা হয়। ইউনিক্স সিস্টেমগুলিতে এই সম্পত্তিটির ডিফল্ট মান সাধারণত "/ tmp" বা "/ var / tmp" হয়; মাইক্রোসফ্ট উইন্ডোজ সিস্টেমে এটি সাধারণত "সি: টেম্পে" থাকে। জাভা ভার্চুয়াল মেশিনটি চালু করা হলে এই সিস্টেমের সম্পত্তিটিতে একটি আলাদা মান দেওয়া যেতে পারে, তবে এই সম্পত্তিটিতে অস্থায়ী ডিরেক্টরিতে ব্যবহৃত অস্থায়ী ডিরেক্টরিতে কোনও প্রভাব থাকার গ্যারান্টিযুক্ত এই সম্পত্তিতে প্রোগ্রামেটিক পরিবর্তনগুলি নেই।
java.io.tmpdirসিস্টেমের বৈশিষ্ট্য নির্দিষ্ট করতে, আপনি JVM কে নিম্নরূপভাবে আবেদন করতে পারেন:
java -Djava.io.tmpdir=/path/to/tmpdir
ডিফল্টরূপে এই মানটি TMPউইন্ডোজ সিস্টেমে পরিবেশ পরিবর্তনশীল থেকে আসা উচিত
java.io.tmpdirউইন্ডোজ এসডিকে ফাংশন GetTempPath( এমএসডিএন.এমক্রিফটিওস / জেনারেল / লিবেরি / আআআ .364992%28VS.85%29.aspx ) ব্যবহার করে সংজ্ঞায়িত করা হয় যা TMP বা TEMP বা USERPROFILE বা উইন্ডোজ ডিরেক্টরিতে প্রতিটির সমাধান করবে যদি প্রত্যেকেই পূর্ববর্তী সংজ্ঞায়িত করা হয় না।
আপনি আপনার _JAVA_OPTIONSপরিবেশ পরিবর্তনশীল সেট করতে পারেন । উদাহরণস্বরূপ ব্যাশে এটি কৌশলটি করবে:
export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir
আমি এটি আমার ব্যাশ লগইন স্ক্রিপ্টের মধ্যে রেখেছি এবং এটি কৌশলটি মনে হচ্ছে।
Picked up _JAVA_OPTIONS:এটি আমাদের বিল্ডিং প্রক্রিয়াটিকে সম্পূর্ণ বিভ্রান্ত করে।
JAVA_TOOL_OPTIONSআরও পোর্টেবল।
ব্যবহার
$ java -XshowSettings
Property settings:
java.home = /home/nisar/javadev/javasuncom/jdk1.7.0_17/jre
java.io.tmpdir = /tmp
এখানে কী চলছে সে সম্পর্কে পরিষ্কার হয়ে উঠতে:
অস্থায়ী ডিরেক্টরি অবস্থান নির্ধারণের প্রস্তাবিত উপায় হ'ল "java.io.tmpdir" নামক সিস্টেম বৈশিষ্ট্য নির্ধারণ, উদাহরণস্বরূপ কমান্ডের বিকল্পটি -Djava.io.tmpdir=/mytempdirদিয়ে java। একটি প্রোগ্রামের মধ্যে থেকে কল System.setProperty("java.io.tmpdir", "/mytempdir)... সম্পত্তিটিকে স্যান্ডবক্স সুরক্ষা সমস্যাগুলি কল করেও পরিবর্তন করা যেতে পারে ।
যদি আপনি স্পষ্টভাবে "java.io.tmpdir" বৈশিষ্ট্যটি শুরু করার সময় সেট না করেন, JVM এটিকে প্ল্যাটফর্মের নির্দিষ্ট ডিফল্ট মান হিসাবে শুরু করে। উইন্ডোজের জন্য, ডিফল্টটি একটি Win32 এপিআই পদ্ধতিতে একটি কল দ্বারা প্রাপ্ত হয়। লিনাক্স / সোলারিসের জন্য স্পষ্টতই হার্ড-ওয়্যার্ড ডিফল্ট। অন্যান্য জেভিএমগুলির জন্য এটি অন্যরকম কিছু হতে পারে।
আমিরতভাবে, "টিএমপি" পরিবেশ পরিবর্তনশীল উইন্ডোজে (বর্তমান জেভিএম সহ) কাজ করে, তবে অন্যান্য প্ল্যাটফর্মগুলিতে নয়। আপনি যদি বহনযোগ্যতার বিষয়ে চিন্তা করেন তবে আপনার স্পষ্টভাবে সিস্টেমের সম্পত্তি সেট করা উচিত।