AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1859930
Accepted
Renesah
Renesah
Asked: 2024-10-26 20:29:56 +0800 CST2024-10-26 20:29:56 +0800 CST 2024-10-26 20:29:56 +0800 CST

bash: java: comando não encontrado

  • 772

Minha distribuição Linux é Debian 12.7.0, 64 bits, inglês.

Modifiquei o guia intitulado Como instalar o Java JDK 21 ou OpenJDK 21 no Debian 12 para que eu pudesse "instalar"/usar a versão mais recente pronta para produção do OpenJDK 23.0.1 (para sua informação, os repositórios oficiais do Debian contêm o OpenJDK 17, que está desatualizado para meu uso).

Cliquei no link https://download.java.net/java/GA/jdk23.0.1/c28985cbf10d4e648e4004050f8781aa/11/GPL/openjdk-23.0.1_linux-x64_bin.tar.gz para baixar o software para o meu computador.

Em seguida, extraí o arquivo compactado usando o comando abaixo:

tar xvf openjdk-23.0.1_linux-x64_bin.tar.gz

Um novo diretório foi criado no meu dispositivo. Ele é chamado jdk-23.0.1

Copiei o diretório para /usr/local

sudo cp -r jdk-23.0.1 /usr/local

Criei um novo script de origem para definir o ambiente Java emitindo o seguinte comando:

su -i
tee -a /etc/profile.d/jdk23.0.1.sh<<EOF
> export JAVA_HOME=/usr/local/jdk-23.0.1
> export PATH=$PATH:$JAVA_HOME/bin
> EOF

Depois de fazer o acima, abri jdk23.0.1.sh usando FeatherPad e o conteúdo mostrou o seguinte:

export JAVA_HOME=/usr/local/jdk-23.0.1
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin

Com base no guia, digitei o seguinte comando:

source /etc/profile.d/jdk23.0.1.sh

Para verificar a versão do OpenJDK no meu computador, digitei:

java --version

Apareceu uma mensagem de erro:

bash: java: command not found

Alguém poderia me mostrar o que eu fiz de errado, por favor? Obrigado.

PS: Segui o guia à risca e mesmo assim apareceu a mensagem de erro.

Editado para corrigir o erro de digitação. A declaração correta deve ser a seguinte:

exportar JAVA_HOME=/usr/local/jdk-23.0.1

bash
  • 1 1 respostas
  • 43 Views

1 respostas

  • Voted
  1. Best Answer
    Tom Yan
    2024-10-27T03:44:01+08:002024-10-27T03:44:01+08:00

    Se você executar:

    tee -a /etc/profile.d/jdk23.0.1.sh<<EOF
    > export JAVA_HOME=/usr/local/jdk-23.0.1
    > export PATH=$PATH:$JAVA_HOME/bin
    > EOF
    

    O script de shell, como você mencionou, conteria:

    export JAVA_HOME=/usr/local/jdk-23.0.1
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin
    

    o que é obviamente errado porque você realmente quer que a segunda linha seja:

    export PATH=$PATH:$JAVA_HOME/bin
    

    para que as variáveis ​​sejam expandidas à medida que o script é originado e, depois disso , o valor da variável de ambientePATH (não o conteúdo do script) se tornará (observe os últimos bits):

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/jdk-23.0.1/bin
    

    se o valor (daquele do respectivo shell) fosse:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    

    antes de obter o script .

    O motivo de você ter conteúdo "inesperado" no script produzido é que, sem citar o primeiro EOFao executar o teecomando, o shell onde você o executa expandirá as variáveis ​​no heredoc.

    E como $JAVA_HOMEnão foi definido no shell onde/quando você executa o comando (o heredoc é uma entrada para tee; ele não será obtido "on the fly" enquanto você o estiver alimentando para tee; nem será obtido automaticamente depois disso), quando a variável foi expandida pelo shell ( antes de alimentar o heredoc para tee), ela é expandida para uma "string vazia" em vez de /usr/local/jdk-23.0.1. É por isso que você obtém (um segundo) :/binno final da segunda linha.

    Para suprimir a expansão, você deve executar:

    tee -a /etc/profile.d/jdk23.0.1.sh<<"EOF"
    > export JAVA_HOME=/usr/local/jdk-23.0.1
    > export PATH=$PATH:$JAVA_HOME/bin
    > EOF
    

    em vez de.


    Observe também que os scripts em /etc/profile.d/normalmente serão originados por qualquer (novo) shell de "login" (aqui significa apenas, por exemplo, bashiniciado com -l), e geralmente mesmo quando os shells anexados a um emulador de terminal podem ser "não-login", eles ainda herdarão o ambiente de uma forma ou de outra de algum processo/shell que originou os scripts lá. Então, após um novo login, você não deve precisar originar manualmente o script recém-criado (de novo).


    Observe também que PATH"component" próximo ao final terá precedência menor, o que significa que com :$JAVA_HOME/bin anexado a PATH, se você instalar algum outro pacote jdk / mais antigo com o gerenciador de pacotes do sistema, ele será usado em vez deste jdk que você tem em /usr/local/. Então, dependendo do que você quer, você pode querer acrescentar antes.

    Além disso, se o pacote jdk do sistema enviar um script semelhante, você precisará garantir que seu script tenha um nome de arquivo que seja ordenado lexicamente posteriormente (o que pode variar dependendo do local atual, eu acho), para que ele seja obtido posteriormente .

    • 1

relate perguntas

  • substituindo zsh por bash no usuário não root

  • Tendo problemas para definir variáveis ​​de ambiente no Terminal no macOS High Sierra

  • Existe um equivalente a cd - para cp ou mv?

  • Notificar-enviar notificações aparecendo na janela

  • como abrir um arquivo de escritório do WSL

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve