Executando um programa java, o Oracle JDK instalou [closed]

0

Instalei recentemente o Oracle JDK, configurei variáveis de ambiente. Tudo funciona bem.

java -version no terminal

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Eu tenho um programa simples de Hello.java que gostaria de executar no terminal.

package com.company;

public class Hello {

    public static void main(String[] args) {
    System.out.println("hello, world");
    }
}

Eu compilo recebo meu arquivo Hello.class gerado no .../out/.../com/company/..

Funciona bem no meu IDE, mas eventualmente terei que executar o terminal de formulário. cd-ed para o diretório Hello.class.

java Hello

apresenta a seguinte massagem de erros.

Error: Could not find or load main class Hello

Como posso executá-lo a partir do terminal?

    
por T. Obadiah 25.06.2017 / 21:42

2 respostas

2

Copie o seguinte em um script chamado Hello.java:

package com.company;
public class Hello {
    public static void main(String[] args) {
    System.out.println("hello, world");
    }
}

A opção -d no comando a seguir cria a hierarquia de diretórios apropriada. Compile seu programa Java com: javac -d . Hello.java e execute-o com:

java com.company.Hello
    
por karel 26.06.2017 / 14:56
2

O problema que gera o erro

O Java procura seu aplicativo no caminho especificado pela sua diretiva package . Nesse caso, com.company .

Você pode compilar esse programa simples comentando a diretiva do pacote, compilá-lo sem o pacote ou criar o caminho e chamá-lo pelo caminho completo.

$ mkdir -p com/company
$ mv Hello.class com/company/
$ java com/company/hello
hello, world

Se você remover a linha package com.company; comentando, ela funcionará como você já tentou e espera.

Se você tiver um projeto grande com várias pastas para seus arquivos de classe, poderá usar um programa gerenciador de jar ou a versão da linha de comandos jar para criar um arquivo Hello.jar .

Seu IDE está fornecendo o caminho e outros detalhes especificados acima. Você pode criar manualmente esse ambiente para executar seus comandos (além de ter várias classes e pacotes em seu archive) usando o comando jar .

Usando o comando Jar para criar programas jar

Você pode criar seu aplicativo Hello para executar como pretendido e ter o tipo de caminho incluído usando este método:

Crie o caminho

$ mkdir -p com/company

Coloque seus arquivos de classe no caminho da linha do pacote:

$ mv Hello.class com/company

Crie um arquivo de manifesto para indicar o main class location

manifest.txt:

Manifest-Version: 1.0
Main-Class: com.company.Hello

Execute o comando jar para criar o pacote

$ jar cfm test.jar manifest.txt com /

Agora você terá um novo arquivo criado, chamado test.jar . O segundo argumento poderia ter sido chamado de qualquer coisa, incluindo Hello.jar ou apenas olá . O novo arquivo pode ser executado de várias maneiras:

$ java -jar test.jar
$ ./test.jar

Se você criou o arquivo jar com o segundo argumento sendo hello , pode executá-lo com:

$ ./hello

Você também pode renomear um arquivo java.jar para qualquer nome depois de criado e executá-lo com esse nome.

A execução de uma classe Java é muito restritiva, pois deve ser executada pelo nome da classe pela qual foi compilada.

Para executar um arquivo jar como um comando sem o argumento "-jar", você teria que alterar o bit de permissão ( chmod +x Hello.jar ).

Detalhes do comando de jarros

Os argumentos jar neste exemplo são:

    -c  Create a new archive
    -f  Specify the archive (jar filename)
    -m  Include manifest information from the specified manifest file

Jar é instalado como parte do pacote JDK. Você pode obter mais detalhes sobre como usar a partir das páginas man ( man jar ), bem como uma ajuda rápida, executando-o sem um argumento.

    
por L. D. James 26.06.2017 / 14:18