Criei um Programa Java e ele não quer abrir no Linux Ubuntu

Olá!
Criei um programa Java e ele não quer abrir no Linux Ubuntu.
No Windows abre de boa.
Mas quando uso o Linux, não quer abrir.
Uma pergunta? O que eu faço?

Se ele não quer, tens de pedir com mais jeitinho. Levá-lo a jantar fora e tentar convencê-lo.

Agora a sério, “não quer abrir”, “não funciona”, “dá erro” são coisas demasiado vagas para que alguma vez alguém consiga ajudar outra pessoa nesta área. Explica exatamente o que estás a fazer e que mensagem de erro ocorre. Só assim poderás ser ajudado.

O código é esse!
Funciona de boa no Windows, mas quando roda no Linux não funciona

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Window {

    public JFrame janela;
    public JButton botao;

    public void Window() {
        janela = new JFrame();
        janela.setTitle("Hello World Example");
        janela.setSize(200, 200);
        janela.setLocation(500, 260);

        Image Icone = Toolkit.getDefaultToolkit().getImage("icone.png");
        janela.setIconImage(Icone);

        // janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        janela.setLayout(null);

        botao = new JButton();
        botao.setText("Hi!");
        botao.setBounds(25, 10, 150, 25); // objeto.setBounds(esquerda, topo, largura, altura)
        janela.add(botao);

        botao.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "Hello World!");
        }});

        janela.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
        }});

        janela.setVisible(true);
    }

    public static void main(String[] args) {
        Window jx = new Window();
        jx.Window();
    }

}

Reforçando o que já foi dito acima: “não funciona” é muito vago. Existem milhares de maneiras de algo não funcionar, então precisamos de mais detalhes, como por exemplo:

  • Como vc está tentando executar? É via linha de comando (e quais comandos)? Está usando algum editor/IDE (e qual)?
  • O que exatamente acontece? Aparece alguma mensagem de erro (e qual é)? Algum outro comportamento (qual)?
  • etc etc etc

Quanto mais detalhes, maior a chance de conseguirmos reproduzir o erro e encontrar a solução.

Quanto menos detalhes, maior a chance de ficarmos só no chute, e talvez com muita sorte alguém consiga adivinhar. Mas pra que depender da sorte se vc pode simplesmente detalhar melhor? :slight_smile:

Estou copilando o código pelo terminal, no Windows funciona, mas não no Linux.

$ javac Window.java
$ java Window
Exception in thread “main” java.lang.UnsatisfiedLinkError: Can’t load library: /usr/lib/jvm/java-17-openjdk-amd64/lib/libawt_xawt.so
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2398)
at java.base/java.lang.Runtime.load0(Runtime.java:755)
at java.base/java.lang.System.load(System.java:1970)
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:315)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:285)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2403)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
at java.base/java.lang.System.loadLibrary(System.java:2006)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:1384)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:1382)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1381)
at java.desktop/java.awt.Toolkit.initStatic(Toolkit.java:1419)
at java.desktop/java.awt.Toolkit.(Toolkit.java:1393)
at java.desktop/java.awt.Component.(Component.java:624)
at Window.Window(Window.java:11)
at Window.main(Window.java:43)

Uma outra dica que vai te ajudar muito: a esmagadora maioria dos erros mais comuns (e até os incomuns) já foram amplamente discutidos na Internet. Então se vc pesquisar pela mensagem de erro, é grande a chance de encontrar algo.

No caso, peguei a mensagem “Exception in thread “main” java.lang.UnsatisfiedLinkError: Can’t load library: /usr/lib/jvm/java-17-openjdk-amd64/lib/libawt_xawt.so” e procurei no Google.

Nos resultados aparecem links com possíveis explicações e várias alternativas de solução - e não faz sentido eu repetir tudo de novo aqui, clica nos links e boa leitura :slight_smile:

E aí não tem jeito, tem que ler, entender qual se aplica ao seu caso e ir tentando as soluções até resolver (de preferência, tentando entender o que cada uma faz, em vez de seguir cegamente e correr o risco de acabar piorando a situação).

Desculpe se não tem uma solução rápida e mágica de mão beijada, mas é bom pra ir se habituando, pois na nossa área a maioria dos problemas são resolvidos assim :slight_smile:

Instalei o JDK de novo e funcionou!
O problema era o JDK mau instalado
Pensava que o Ubuntu bloqueasse janelas
Obrigado!