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 .