Não é possível definir o CLASSPATH

0

Estou usando o comando "java -cp / home / ubuntu / myapp" para definir o comando para o diretório onde as classes do aplicativo mu estão localizadas. No entanto, parece que não estou tendo sorte. O terminal simplesmente responde, dando-me uma lista de possíveis comandos java - que, curiosamente, incluem "-cp". Como faço para o Ubuntu me levar a sério e realmente fazer o que eu digo a ele?

    
por spacitron 18.07.2013 / 04:18

1 resposta

1

Resumo executivo

java -cp não executa automaticamente um programa no caminho de classe especificado, ele apenas especifica o caminho de classe a ser usado ao executar um programa Java que você deve especificar nesse mesmo comando.

Explicação completa

java executa programas Java. Ele não os modifica nem armazena configurações persistentes sobre eles.

A -cp flag não define o caminho de classe, especifica um caminho de classe a ser usado ao executar um programa em java.

A execução de java com somente um -cp flag (e seu argumento) é uma sintaxe inválida. Você deve informar java qual programa java você deseja executar com esse caminho de classe . Isso executará esse programa uma vez com esse caminho de classe. Ele não fará com que ele seja executado com esse caminho de classe no futuro, a menos que o caminho de classe seja especificado novamente.

Não está claro a sua pergunta exatamente o que você está tentando realizar, mas eu detalhei algumas possibilidades abaixo.

(Se você ainda precisar de mais informações, por favor sinta-se à vontade para editar sua pergunta para esclarecimentos e comentários sobre esta resposta, ou se você achar que tem uma questão separada, você pode perguntar separadamente. A página de manual do comando java também pode ajudar, observe que o nome de uma classe ou É necessário o arquivo jar Para obter a página de manual da versão instalada exata de java em sua máquina, execute man java .

Talvez não seja necessário definir manualmente um caminho de classe.

Se myapp for um diretório localizado em /home/ubuntu , que contém classes para o seu programa, então você não precisa (geralmente) especificar um caminho de classe. Nesse caso, basta executar o programa (ou seja, passar o nome da classe que contém a função main do programa para java .

Por exemplo, se o arquivo .class da classe que contém seu método main for /home/ubuntu/myapp/launch-myapp.class , apenas execute:

java /home/ubuntu/myapp/launch-myapp

(Observe que você não especifica o sufixo .class , como está implícito.)

A maioria dos programas Java consiste em várias classes e, geralmente, todos os arquivos .class são empacotados em um único arquivo .jar . Se esse for o caso, execute java com o sinal -jar e especifique o nome completo do arquivo.

Por exemplo, se as classes do seu programa (incluindo a classe que contém main ) forem fornecidas pelo arquivo /home/ubuntu/myapp/myapp.jar , apenas execute:

java -jar /home/ubuntu/myapp/myapp.jar

Observe que, para executar um arquivo .jar com java -jar , você faz especifica a extensão .jar no final do nome do arquivo; não é considerado como implícito.

Com muito menos frequência, você pode querer especificar manualmente um caminho de classe.

Para fazer isso, você deve especificar o caminho de classe e também o programa Java que você deseja executar (ou seja, a classe que contém seu método main ).

Por exemplo, suponha que você queira executar /home/bob/myapp.class com o classpath /home/ubuntu/myapp . Então você executaria:

java -cp /home/ubuntu/myapp /home/bob/myapp

Ou se você estiver executando /home/bob/myapp.jar com esse caminho de classe:

java -cp /home/ubuntu/myapp -jar /home/bob/myapp.jar

Você pode estar tentando definir o caminho de classe padrão a ser usado ao executar qualquer programa Java no futuro (exceto quando um caminho de classe alternativo é especificado).

Se é isso que você está tentando fazer, defina a variável de ambiente CLASSPATH . Veja a documentação oficial sobre isso como pontou por karel .

Em suma, você simplesmente torna CLASSPATH uma lista delimitada por ponto-e-vírgula dos diretórios que deseja pesquisar automaticamente.

Para mais informações sobre como configurar variáveis de ambiente , consulte esta questão e esta página wiki da documentação do Ubuntu .

    
por Eliah Kagan 18.07.2013 / 04:50