Вызвать код 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.
Спасибо