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

كيف يمكنك أن تفتح و تنفذ برنامج جافا من خلال برنامجك الخاص

بدأه asminf في 1 ديسمبر 2008 · 8 رد · 1,935 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

هذا أول موضوع لي بالموقع ، أتمنى أن يكون له صدى ومنفعة لمتصفحيه

بصراحة لقد قمت بطرح هذا السؤال مذ أكثر من عام في موقع آخر ولكن لم أتلق إجابة للأسف ، ولكني تمكنت من فتح وتنفيذ برامج جافا من خلال برنامجي الصغير بالستعمال JPDA java platforme debugger architecture by jdi.

ولهذا وددت طرح هذا السؤال مجددا وهنا من إخواني العرب ومن هذا الموقع الذي أعجبني كثيرا بصراحة من الخبيرين في هذا المجال لأني لست سوى مبتدأة في الجافا

لا أدري إن كان العنوان مفهوما تماما.

المقصود هو :

How can i launching an application by performing its path and its class main without using the java command line explicitly?

بالنسبة لما وجدت تلك الأثناء ،مايلي:

about the execution of an extern application using a debugger application, witch is by using Launching Connector, and this connector can be used by a debugger application to launch a Sun VM or any other VM,

There are two Launching Connectors provided by sun:

Sun Command Line Launching Connector.

Raw Command Line Launching Connector.

For using these connectors, the GUI example in demo\jpda of jdk , uses theses connectors exactly in the LaunchTool class, illustrate how to use all jpda connectors with a user arguments .

There are other ways to execute another application programmatically"i didn't use them in my application" with the exec () method in the class Runtime, and JDK 5.0 adds a new way of executing a command in a separate process, through a class called ProcessBuilder.

سأحاول تعريبها :

لكي نستطيع تشغيل برنامج جافا من خلال برنامجنا الخاص ، يمكننا العمل بالديبغ باستخدام جي بي دي أا وبالضبط جي دي اي نافذة منه ، إذ نستخدم روابط التنفيذ الموفرة :

There are two Launching Connectors provided by sun:

Sun Command Line Launching Connector.

Raw Command Line Launching Connector.

exec ()ويمكن أيضا استخدام الدالة

Runtimeالتابعة للفرع

آسفة عن الترجمة الركيكة. :happy:

#2

وعليكــم السـلام ورحمة الله وبركاتـه..

حياك الله ،

لا أعلم عن تشغيل ملف بالطريقه الأولى ، ولكن بشكل عام تشغيل برنامج في أي debugger لا ينفع لأن مهمه المنقح هو تتبع البرنامج وليس تنفيذه ،، لذلك يمكن لتكون لأغراض تجربه فقط ،،

الطريقه الثانيه هي الأفضل عن طريقه الداله exec والتي مهتمها استقبال أي أمر من أوامر النظام (دوز مثلا)، وتنفيذ هذا الأمر .. مثلا

Runtime.getRuntime().exec("java myfile");

هنا يقوم بتنفيذ الأمر java وهو تشغيل الملف myfile ، وهكذا تستطيع تطبيق أي أمر من أوامر النظام باستخدام هذه الداله .. يمكنك استخدام خاصيه البحث هنا في القسم ، فقد تحدث الشباب كثيرا حول الموضوع ..

مقال جيد أيضا :

From Runtime.exec() to ProcessBuilder

بالتوفيق :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

السلام عليكــم ورحمـة الله وبركاتــه

أشكرك جزيلا أخي على توضيحاتك القيمة.

ProcessBuilder Methodوقمت بتجريب

وتمت والحمد لله بنجاح

jpda is a part java spesification, used to develop a debogging applications, as an editors, tracers, ...I used it to accesiing the current informations of a running application "at runtime", so i must work in debug mode.

بالنسبة" للجي بي دي أي" تابعة للسان لتطوير البرامج التصحيحية كما قلت ولها استعمالات أخري إذ تشبه ارشيتاكتور كلينت /سرفر للإتصال عن طريق "السوكت/أو شارد ميموري"

أخرjvms مع

وجهة نضر،ان شاء الله تفيد -_-

#4

في حاجة شبه كده

/int errorCode = com.sun.tools.javac.Main.compile(new String[] { "-classpath", "bin","-d", "d:","test.java" });

وجدتها في البحث عن نفس الموضوع في المنتدى منذ مدة

ولكني لم استطيع أستخدامها وأستخدمت نفس طريقة الأخ وجدي

ياريت لو عرفت تخبرني

مدونتي

برمجة وما يتبعها

#5

السلام عليكــم ورحمـة الله وبركاتــه

أشكرك أخي أبو عوف على مشاركتك.ولكن عفوا لم أفهم جيدا قصدك

هل تقصد بأن الكود الذي ذكرت باستخدام الجي بي دي آي التي تكلمت عنها؟ فلا أعتقد ذلك

أحيطك علما بأن هذه الأخيرة توجد ك ليبروري في جي دي كا اسمها tools.jar

وكأمثلة على استعمالاتها توفر السان ذلك في الديمو التابع للجي دي كا

إن كنت تقصد هذا فأستطيع التوضيح أكثر لابأس.

#6

لا أعرف لأي شيء تتبع هذه ,كل ما أتذكره أنه بأستخدامها تقوم بعمل كومبيل لملف جافا بدون أدخال الدوس في الوسط ,فكما قلت وجدتها في بحث منذ مدة ولكني لا اجده الآن

أنا مبتدأ في الجافا ولا أدري عن هذه التقنيات شيء

جزاك الله خير أولا مرة أعرف أن في ديمو تبع الجافا في jdk

مدونتي

برمجة وما يتبعها

#7

السلام عليكم.

بالنسبة للطريقة التي وجدتها في بحثك ووجدت الخطأ الذي ذكرته أعلاه ، حاولت أن أستعملها ولم أفلح بعد ولكن الخطأ الظاهر أعلاه دال على عدم استدعائك للليبروري tools.jar التي بها الباكج com.sun.tools.javac.*

الخطأ الذي ظهر لي بعد ذلك هو javac: file not found: Foo.java

*أنا أحاول استعمال Foo.javaبدل Test.java *

أحاول فهم طريقة استخدام هذه المتود ومكان وضع ملف البرنامج الذي أريد أن تجميعه.

أنا أيضا مبتدأة أخي ، و جزاك الله خيرا على تعقيباتك.

#8

السلام عليكــم ورحمـة الله وبركاتــه

سأحاول اليوم أن أوضح طريقة استخدام jpda :لتشغيل برنامج جافا باستخدام

Sun Command Line Launching Connector " com.sun.jdi.CommandLineLaunch "

jpda تحوي عدة واجهات"Interfaces" :

- JDI provides a pure Java interface "متمثلة في الليبروري tools.jar"

- JVM TI supplied as a native shared library "jdwp.so, jdwp.dll"

- JDWP بروتوكول للإتصال بين الواجهتين ونقل المعلومات بينهما

إذن com.sun.jdi.CommandLineLaunch رابط تابع لل JDI فيجب ادراج tools.jar library للبرنامج.

إليكم الخطوات كيف يتم استدعاء واستخدام هذا الرابط لتشغيل برنامج جافا باعطاء مكان تواجده classpath of java classes واسم الكلاس ماين main class ، بالإضافة إلى أنه يمكن تشغيل الجار فايلس for a jar files application .

1 - com.sun.jdi.CommandLineLaunch البحث عن

/*

* Find a com.sun.jdi.CommandLineLaunch connector

*/

LaunchingConnector findLaunchingConnector() {

List connectors = Bootstrap.virtualMachineManager().allConnectors();

Iterator iter = connectors.iterator();

while (iter.hasNext()) {

Connector connector = (Connector)iter.next();

if (connector.name().equals("com.sun.jdi.CommandLineLaunch")) {

return (LaunchingConnector)connector;

}

}

throw new Error("No launching connector");

}

2- Configure and connect to the application using the com.sun.jdi.CommandLineLaunch connector:

هنا يجب تحديد Sun Command Line Launching Connector Arguments

وهاهو الجدول الموضح في jpda documentation of sun الذي يبرز هذه الأرغمنت لأجل تشغيل برنامج جافا

lanchjq5.png

private void ConfigureAndConnect(final LaunchingConnector connector) {

final Map arguments= connector.defaultArguments();

/**Here we get the Option main and then we set it according to the args of main method*/

Connector.Argument mainArgument =(Connector.Argument)arguments.get("main");

StringBuffer mainArgs = new StringBuffer();

int i;

for(i = 0; i < args.length - 1; i++) {

mainArgs.append(args + " ");

} mainArgs.append(args);

mainArgument.setValue(mainArgs.toString());

/**

*Vm lanching

*/

vm = connector.launch(arguments);

options, ...نستطيع أيضا تحديد الأرغمنتس الأخرى ك

والآن سأرفق لكم برنامج بياني صغير لاستعمال com.sun.jdi.CommandLineLaunch

وقد استعنت في انشاءه بعضا من الأمثلة الموفرة في demo/jpda/examples.jar بالjdk

وقمت بانشاءه باستخدام netbeans ide

شرح نافذة البرنامج سيكون لاحقاان شاء الله لمن لم يعرف طريقة استخدامه.

JdiCnnctors.rar

تم تعديل هذه المشاركة بواسطة asminf في 26 ديسمبر 2008 في 23:54

#9

السلام عليكــم ورحمـة الله وبركاتــه

أرى 0 تعقيب على البرنامج، ولكن سأكمل شرح عمله كما ذكرت:

JdiConnectors.GUImain Is the main class

تستطيع استخدام الجار فيل الموجود بالDist

أو تنفيذ البرنامج من خلال main class الموجود بال \build\classes

ستظهر نافذة البرنامج كما يأتي:

applwq1.png

تظهر أمامكم الحاشية lanching التي توضح عمل com.sun.jdi.commandLineLaunch Connector

نضع في TextField لل Options مثلا مكان البرنامج المراد تنفيذه

ونضع اسم Main class للبرنامج

وكمثال على ذلك:

mainlaunchcu7.png

ننفذ برنامج جافا موجود بال الباث: e:\asma\Appl\mon

وذو الكلاس ماين Memory monitor وبعدها نضغط على الزر Excut

فتظهر نافذة التطبيق.

أرجو أن تكون هناك ردود هذه المرة :D

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…