الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة مع ProcessBuilder

بدأه Lovelorn2008 في 21 أكتوبر 2010 · 7 رد · 757 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أرجوكم عندي مشكلة تظهر لي مع استخدام الكلاس ProcessBuilder

ما راح أطول عليكم, البرنامج عملته صغير ليكون تجريبي, يتكون من 2 classes, الأول فقط يطبع لي عبارة معينة والثاني ينفذ البرنامج الأول ولكن في عملية مستقلة, إليكم الأكواد:

First.java

public class First {

public First() {

System.out.println("Hello World !");

}

/**

* @param args

*/

public static void main(String[] args) {

First app = new First();

}

}

Main.java

import java.io.File;

public class Main {

public Main() {

try {

ProcessBuilder process = new ProcessBuilder("java First");

process.directory(new File(System.getProperty("user.dir") + "/bin"));

process.start();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* @param args

*/

public static void main(String[] args) {

Main app = new Main();

}

}

أستخدم أنا برنامج Eclipse وفيه مثل منتوا عارفين مجلد src للملفات المصدرية ومجلد bin لملفات class.

الخطأ اللي يظهر لي يقول لي انوا مو قادر يحصل المسار اللي أنا محدده ونص الخطأ بالضبط هو:

java.io.IOException: Cannot run program "java First" (in directory "F:\Java World\eclipse_workspace\Quick\bin"): CreateProcess error=2, The system cannot find the file specified

at java.lang.ProcessBuilder.start(Unknown Source)

at Main.<init>(Main.java:10)

at Main.main(Main.java:20)

Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified

at java.lang.ProcessImpl.create(Native Method)

at java.lang.ProcessImpl.<init>(Unknown Source)

at java.lang.ProcessImpl.start(Unknown Source)

... 3 more

أقسم بالله تفقعت عيوني ماني قادر أعرف فين الخطأ - آآآآآآآآآآآآآآآآآه يا ألبي آآآآآآآآه

#2

:)

تعديل.....بالتوفيق

ان شاء الله عضو يفيدك

تم تعديل هذه المشاركة بواسطة نفرتاري في 21 أكتوبر 2010 في 14:16

00020309t.gif

1958_1963.gif
#3
نفرتاري كتب:

اختى

اعتقد يوجد عندك خطأ هنا:::

process.directory(new File(System.getProperty("user.dir") + "/bin"));

ليصبح

process.directory(new File(System.getProperty("user.dir+ "/bin") "));

لا كدا مش هينفع

لان الداله

System.getProperty("user.dir")

بتاخد متغيرات معروفه وثابته

ممكن انت بعدها تضيف عليها

وليس الاضافه الى المتغيرات نفسها

فالبتالى طريقه الاخت التى تسال سليمه

لكن هناك خطا فى عدم الوصول للملف

اتمنى اى حد بيشتغل ecplise يرد عليكى

ان شاء الله الاخ هويدى ممكن لو دخل يرد :)

بالتوفيق :)

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 21 أكتوبر 2010 في 12:08

Software Developer
Mahmoudkelany.com


 

#4

جرب تغيير

ProcessBuilder process = new ProcessBuilder("java First");

ب

ProcessBuilder process = new ProcessBuilder("java", "First");

ProcessBuilder تنتظر مصفوفة تحتوي على البرنامج وعلى ال arguments بشكل مستقل، وليس في String مجتمعة، بالتالي يجب وضع java ثم First مستقلتين

لكن حتى لو اشتغل البرنامج فلن تتم طباعة Hello World. يجب أن تسترجع ال output الخاص بالبرنامج بالحصول على inputstream يشير إلى ال standard output

Process.getInputStream

تم تعديل هذه المشاركة بواسطة herch في 21 أكتوبر 2010 في 17:17

#5

السلام عليكم

الله يعطيكم ألف عافية جميعاً على الردود.

ما قصرت أخوي herch فعلاً جوابك صحيح 100% ومشكلتي انحلت تماماً لما عملت مثل ما قلت بالرد من فصل الأمر وكيفية الحصول على مخرجات البرنامج اللي ابغى أنفذه بعملية مستقلة , بيض الله وجهك وما قصرت يالطيب :)

أخوي Mahmoud Kelany ما قصرت والله يعطيك العافية على اهتمامك بالرد على سؤالي :) (الله يعافيك أنا رجال ماني بنت :D )

شكراً لكم مرة ثانية جميعاً....

#6
Lovelorn2008 كتب:

السلام عليكم

أخوي Mahmoud Kelany ما قصرت والله يعطيك العافية على اهتمامك بالرد على سؤالي :) (الله يعافيك أنا رجال ماني بنت :D )

معذره اخى الكريم

متاسف على هذا الخطأ

Software Developer
Mahmoudkelany.com


 

#7
Mahmoud Kelany كتب:

معذره اخى الكريم

متاسف على هذا الخطأ

لا, أعوذ بالله أخوي ما حصل شي ...

على راسي أنت والله يالطيب.

تم تعديل هذه المشاركة بواسطة هويدي في 23 أكتوبر 2010 في 12:52 — السبب: وضع فاصله بين "لا" و "أعوذ بالله" ... لتوضيح ال&#

#8

ممكن تعلمنا كيف انحلت المشكلة ؟

يبدوا انك تعمل على نظام تشغيل لينكس ؟!

مواضيع مشابهة