سؤال

السؤال

لدي تطبيق مكتوب بلغة جافا.وهي مصممة لتعمل على لينكس صندوق مستقل.أنا أحاول أن تفرخ جديد فايرفوكس نافذة.ومع ذلك ، فايرفوكس لم يفتح.لديها دائما شل كود الخروج من 1.لا يمكن تشغيل هذا الرمز نفسه مع gnome-terminal و يفتح بخير.

الخلفية

حتى هنا هو عملية التهيئة:

  1. تبدأ X "Xorg :1 -br-إنهاء-dpms -هادئة vt7"
  2. بدء تشغيل نافذة "مدير metacity --عرض=:1 --استبدال"
  3. تكوين الموارد "xrdb -دمج /etc/X11/Xresources"
  4. تصبح شيطان وقطع من السيطرة على محطة

عندما يصل البرنامج تشغيل ، هناك زر يمكن للمستخدم النقر ينبغي أن تفرخ فايرفوكس نافذة.هنا هو بلدي البرمجية للقيام بذلك.تذكر X يعمل على عرض :1.

رمز


public boolean openBrowser()
{
  try {
    Process oProc = Runtime.getRuntime().exec( "/usr/bin/firefox --display=:1" );
    int bExit = oProc.waitFor();  // This is always 1 for some reason

    return true;

  } catch ( Exception e ) {
    oLogger.log( Level.WARNING, "Open Browser", e );
    return false;
  }
}
هل كانت مفيدة؟

المحلول

بعد قراءة إجابات مختلفة و التعليقات المختلفة(من السائل) ، وهنا ما أود أن تفعل

1) جرب هذه جافا النهج http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ProcessBuilder.html

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory("myDir");
Process p = pb.start();

انظر المزيد عن هذا الفصل:

http://java.sun.com/developer/JDCTechTips/2005/tt0727.html#2
http://www.javabeat.net/tips/8-using-the-new-process-builder-class.html

2) حاول القيام بذلك(شن فايرفوكس) من C/C++/روبي/بيثون ومعرفة ما إذا كان هذا هو النجاح.

3) إذا فشل كل شيء آخر ، وأود أن إطلاق قذيفة البرنامج أن برنامج قذيفة إطلاق فايرفوكس!!

نصائح أخرى

إذا كنت يمكن أن ضيق عليه جافا 6 ، يمكنك استخدام سطح المكتب API:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

ينبغي أن ننظر بشيء من مثل:

    if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        if (desktop.isSupported(Desktop.Action.BROWSE)) {
            try {
                desktop.browse(new URI("http://localhost"));
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
            catch(URISyntaxException use) {
                use.printStackTrace();
            }
        }
    }

استخدام BrowserLauncher.

الاحتجاج فمن السهل جدا فقط اذهب

new BrowserLauncher().openURLinBrowser("http://www.google.com");

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

try {
     String url = "http://www.google.com";
     java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
} catch (java.io.IOException e) {
     System.out.println(e.getMessage());
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top