我尝试运行 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 还是必须单独安装和集成它?
我没有使用无头!
您可以通过 JVM 参数传递来修复运行:
-Djava.awt.headless=true
我修复了它,我在我的计算机上安装了 openjdk 8(不是无头!)并重新启动我的系统
在您通过 SSH 连接的远程 Linux 服务器上,这可能是因为您必须使用 GUI 运行程序。
如果@BeCase 的解决方案对您不起作用,这可能就是问题所在。
如果是这种情况,那么您必须执行以下操作:
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
xserver
客户端程序设置 X11 转发,这样您就可以将远程窗口应用程序直观地传输到本地计算机上(是的,这是真实的):-X
标志通过 SSH 连接到启用 x-forwarding 的目标计算机:ssh -X [email protected]
(注意:如果您使用跳转服务器或代理 ssh 服务器,请在每个连接上使用
-X
,它仍然会将 GUI 输出到本地 xserver
客户端)
java -jar runnableJARfile.jar
???
利润!您应该看到一个从服务器通过管道传输到本地计算机的 GUI!