在網上 抄的代碼,在 Windows 下運行沒毛病,但放到 linux 上卻無法運行了,報錯
Failed to create chrriis.dj.nativeswing.swtimpl.components.NativeWebBrowser[1,94997391]
Caused by: org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]
at org.eclipse.swt.SWT.error(SWT.java:4109)
at org.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1739)
at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:656)
at org.eclipse.swt.browser.Browser.<init>(Browser.java:119)
at chrriis.dj.nativeswing.swtimpl.components.NativeWebBrowser.createControl(NativeWebBrowser.java:402)
... 16 more
源代碼如下
package com.wolfgroup.zlssf.client.screen;
import java.awt.*;
import javax.swing.*;
import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
public class ClientScreen extends JPanel {
private JPanel webBrowserPanel;
private JWebBrowser webBrowser;
public ClientScreen(String url){
super(new BorderLayout());
webBrowserPanel = new JPanel(new BorderLayout());
webBrowser = new JWebBrowser();
webBrowser.setButtonBarVisible(false);
webBrowser.setMenuBarVisible(false);
webBrowser.setBarsVisible(false);
webBrowser.setStatusBarVisible(false);
webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
add(webBrowserPanel, BorderLayout.CENTER);
webBrowser.navigate(url);
}
public static void openForm(String url){
UIUtils.setPreferredLookAndFeel();
NativeInterface.open();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(new ClientScreen(url));
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// frame.setLocationByPlatform(true);
// frame.setUndecorated(true);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
for(GraphicsDevice gd : ge.getScreenDevices()){
Rectangle rec = gd.getDefaultConfiguration().getBounds();
boolean isDefault = (gd == ge.getDefaultScreenDevice());
System.out.println(gd.getIDstring() + " default = " + isDefault);
System.out.println("(" + rec.getX() + ", " + rec.getY() + ", " + rec.getWidth() + ", " + rec.getHeight() + ")");
System.out.println();
if(isDefault){
// frame.setLocation((int)rec.getWidth(), 0);
}else {
// frame.setSize((int)rec.getWidth(), (int)rec.getHeight());
// gd.setFullScreenWindow(frame);
}
// gd.setFullScreenWindow(frame);
frame.setLocation(0, 0);
frame.setSize((int)rec.getWidth() / 2, (int)rec.getHeight() / 2);
}
// GraphicsDevice gd = ge.getDefaultScreenDevice();
// gd.setFullScreenWindow(frame);
// frame.getGraphicsConfiguration().getDevice().setFullScreenWindow(frame);
//讓表單可見
frame.setVisible(true);
frame.setTitle("我的瀏覽器");
//重置表單大小
// frame.setResizable(true);
// 設定表單的寬度、高度
// frame.setSize(1400, 700);
// 設定表單居中顯示
// frame.setLocationRelativeTo(frame.getOwner());
}
});
NativeInterface.runEventPump();
}
public static void main(String[] args){
// if(args == null || args.length != 1)
// throw new RuntimeException("請指定URL引數");
// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
// if(ge.getScreenDevices().length < 2)
// throw new RuntimeException("要求雙顯示幕");
// openForm(args[0]);
openForm("http://www.baidu.com");
}
}
uj5u.com熱心網友回復:
網上找到的解決方案全部來自一篇文章,說要安裝
sudo apt-get install libwebkitgtk-1.0-0
但運行結果是:
驗證成功
正在讀取軟體包串列... 完成
正在分析軟體包的依賴關系樹
正在讀取狀態資訊... 完成
沒有可用的軟體包 libwebkitgtk-1.0-0,但是它被其它的軟體包參考了。
這可能意味著這個缺失的軟體包可能已被廢棄,
或者只能在其他發布源中找到
E: 軟體包 libwebkitgtk-1.0-0 沒有可安裝候選
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269752.html
標籤:Java SE
