উল্লেখ করুন যে এটি কেবলমাত্র চেক করা আছে Windows
তবে আমি মনে করি এটি অন্যান্য অপারেটিং সিস্টেমগুলিতে নির্ভুল কাজ করে [ Linux,MacOs,Solaris
] :)।
একই ডিরেক্টরিতে আমার 2 টি .jar
ফাইল ছিল । আমি এক .jar
ফাইল থেকে অন্য .jar
ফাইলটি একই ডিরেক্টরিতে থাকা অন্য ফাইলটি শুরু করতে চেয়েছিলাম ।
সমস্যাটি হ'ল আপনি যখন cmd
এটি বর্তমান ডিরেক্টরি থেকে শুরু করেন তা হয় system32
।
সতর্কবাণী!
- নীচেগুলি ফোল্ডারের নাম দিয়ে এমনকি আমার করা সমস্ত পরীক্ষায় বেশ ভাল কাজ করেছে বলে মনে হচ্ছে
;][[;'57f2g34g87-8+9-09!2#@!$%^^&()
বা ()%&$%^@#
এটি ভালভাবে কাজ করে।
- আমি
ProcessBuilder
নীচের সাথে নীচের সাথে ব্যবহার করছি :
🍂 ..
//The class from which i called this was the class `Main`
String path = getBasePathForClass(Main.class);
String applicationPath= new File(path + "application.jar").getAbsolutePath();
System.out.println("Directory Path is : "+applicationPath);
//Your know try catch here
//Mention that sometimes it doesn't work for example with folder `;][[;'57f2g34g87-8+9-09!2#@!$%^^&()`
ProcessBuilder builder = new ProcessBuilder("java", "-jar", applicationPath);
builder.redirectErrorStream(true);
Process process = builder.start();
//...code
🍂 getBasePathForClass(Class<?> classs)
:
/**
* Returns the absolute path of the current directory in which the given
* class
* file is.
*
* @param classs
* @return The absolute path of the current directory in which the class
* file is.
* @author GOXR3PLUS[StackOverFlow user] + bachden [StackOverFlow user]
*/
public static final String getBasePathForClass(Class<?> classs) {
// Local variables
File file;
String basePath = "";
boolean failed = false;
// Let's give a first try
try {
file = new File(classs.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
if (file.isFile() || file.getPath().endsWith(".jar") || file.getPath().endsWith(".zip")) {
basePath = file.getParent();
} else {
basePath = file.getPath();
}
} catch (URISyntaxException ex) {
failed = true;
Logger.getLogger(classs.getName()).log(Level.WARNING,
"Cannot firgue out base path for class with way (1): ", ex);
}
// The above failed?
if (failed) {
try {
file = new File(classs.getClassLoader().getResource("").toURI().getPath());
basePath = file.getAbsolutePath();
// the below is for testing purposes...
// starts with File.separator?
// String l = local.replaceFirst("[" + File.separator +
// "/\\\\]", "")
} catch (URISyntaxException ex) {
Logger.getLogger(classs.getName()).log(Level.WARNING,
"Cannot firgue out base path for class with way (2): ", ex);
}
}
// fix to run inside eclipse
if (basePath.endsWith(File.separator + "lib") || basePath.endsWith(File.separator + "bin")
|| basePath.endsWith("bin" + File.separator) || basePath.endsWith("lib" + File.separator)) {
basePath = basePath.substring(0, basePath.length() - 4);
}
// fix to run inside netbeans
if (basePath.endsWith(File.separator + "build" + File.separator + "classes")) {
basePath = basePath.substring(0, basePath.length() - 14);
}
// end fix
if (!basePath.endsWith(File.separator)) {
basePath = basePath + File.separator;
}
return basePath;
}
cd
এই আদেশটি প্রয়োগ করেন তখন আপনার কমান্ড-প্রম্পটে কমান্ড কার্যকর করার সময় আপনি যা দেখতে পান তা এখানে আটকানতে পারেন ?