Для того, чтобы сделать определенные функции, я должен вызывать 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.
Спасибо
Задача ещё не решена.
Других решений пока нет …