Вызвать код Java, имеющий некоторый пользовательский интерфейс с PHP exec

Для того, чтобы сделать определенные функции, я должен вызывать Java с помощью PHP Exec.

При непосредственном использовании в оболочке он работает хорошо. Но он выдает ошибку, связанную с пользовательским интерфейсом при использовании с PHP Exec.

Хотя причина вполне очевидна, поскольку в интерфейсе пользователя не сработала ошибка. Есть ли способ подавить эти ошибки?

Вот небольшой код Java, который включает в себя некоторый интерфейс:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*;
public class Frame2 extends JFrame 
{
  JPanel pane = new JPanel();
  JButton pressme = new JButton("Press Me");
  Frame2()        // the frame constructor
  {
    super("JPrompt Demo"); setBounds(100,100,300,200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container con = this.getContentPane(); // inherit main frame
    con.add(pane);    // JPanel containers default to FlowLayout
    pressme.setMnemonic('P'); // associate hotkey to button
    pane.add(pressme); pressme.requestFocus();
    setVisible(true); // make frame visible
  }
  public static void main(String args[]) throws Exception  
  {new Frame2();}
}

При выполнении непосредственно в командной строке javac Frame2.java он выполняется без каких-либо жалоб. Но когда вызывается через PHP exec exec ("javac Frame2.java && java Frame2"); выдает следующую ошибку:

Исключение в потоке "main" java.awt.HeadlessException: переменная X11 DISPLAY не была установлена, но эта программа выполнила операцию, которая требует этого. в java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) в java.awt.Window.(Window.java:536) в java.awt.Frame.(Frame.java:420) в javax.swing.JFrame.(JFrame.java:233) в Frame2.(Frame2.java:10) в Frame2.main (Frame2.java:18)

PS - Я много читал о PHP Java Bridge, но было бы здорово, если бы можно было избежать PHP Java Bridge.

Спасибо

0 ответов

Другие вопросы по тегам