Java openjdk 错误:无法加载库(java awt)

问题描述 投票:0回答:3

我尝试运行 java awt 程序,但出现此错误:

我使用的是lubuntu 18.04和openjdk 11

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
    at java.base/java.lang.Runtime.load0(Runtime.java:768)
    at java.base/java.lang.System.load(System.java:1837)
    at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
    at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
    at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
    at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
    at java.base/java.lang.System.loadLibrary(System.java:1873)
    at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1399)
    at java.desktop/java.awt.Toolkit$3.run(Toolkit.java:1397)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1396)
    at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1429)
    at java.desktop/java.awt.Component.<clinit>(Component.java:621)

这是我在编辑器中编写的代码:

class calculator extends Frame{  
    calculator(){  
    Button b=new Button("click me");  
    b.setBounds(30,100,80,30);  
    add(b);  
    setSize(300,300); 
    setLayout(null);  
    setVisible(true); 
    }  
    
    public static void main(String args[]){  
    calculator f=new calculator();  
    }}  

我可以在 openjdk 11 中使用 java awt 还是必须单独安装和集成它?

我没有使用无头!

java java-11 openjdk-11
3个回答
7
投票

您可以通过 JVM 参数传递来修复运行:

-Djava.awt.headless=true

0
投票

我修复了它,我在我的计算机上安装了 openjdk 8(不是无头!)并重新启动我的系统


0
投票

在您通过 SSH 连接的远程 Linux 服务器上,这可能是因为您必须使用 GUI 运行程序。

如果@BeCase 的解决方案对您不起作用,这可能就是问题所在。

如果是这种情况,那么您必须执行以下操作:

  1. 卸载
    openjdk-11-jdk-headless
    并安装
    openjdk-11-jdk
# use your respective package manager, here is how you switch on Debian/Ubuntu
sudo apt-get install openjdk-11-jdk-headless
sudo apt-get install openjdk-11-jdk
  1. 使用本地
    xserver
    客户端程序设置 X11 转发,这样您就可以将远程窗口应用程序直观地传输到本地计算机上(是的,这是真实的):
  1. 使用
    -X
    标志通过 SSH 连接到启用 x-forwarding 的目标计算机:
ssh -X [email protected]

(注意:如果您使用跳转服务器或代理 ssh 服务器,请在每个连接上使用

-X
,它仍然会将 GUI 输出到本地
xserver
客户端)

  1. 在 SSH 终端中,正常运行 GUI 应用程序:
java -jar runnableJARfile.jar
  1. ???

  2. 利润!您应该看到一个从服务器通过管道传输到本地计算机的 GUI!

© www.soinside.com 2019 - 2024. All rights reserved.