gpt4 book ai didi

javac 不是内部或外部命令,也不是可运行的程序或批处理文件

转载 作者:行者123 更新时间:2023-12-01 16:56:16 26 4
gpt4 key购买 nike

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。



Improve this question




我在尝试编译 Java 程序时遇到错误。

我在 Windows 上(这是一个特定于 Windows 的问题)并且我安装了最新的 JDK。

我尝试了一个涉及 PATH 的解决方案变量,但错误仍然存​​在。

控制台输出:

C:\>set path=C:Program Files (x86)\Java\jdk1.7.0\bin
C:\>javac Hello.java
'javac' is not recognized as an internal or external command,
operable program or batch file.

最佳答案

TL; 博士

对于有经验的读者:

  • 找到Java路径;它看起来像这样:C:\Program Files\Java\jdkxxxx\bin\
  • 开始菜单搜索“环境变量”以打开选项对话框。
  • 检查 PATH .删除旧的 Java 路径。
  • 将新的 Java 路径添加到 PATH .
  • 编辑 JAVA_HOME .
  • 关闭并重新打开控制台/IDE。


  • 欢迎!

    您遇到了 Java 初学者面临的最臭名昭著的技术问题之一: 'xyz' is not recognized as an internal or external command...错误信息。

    简而言之, 您没有正确安装 Java .在 Windows 上完成 Java 的安装需要一些手动步骤。在安装 Java 之后,包括升级 JDK 之后,您必须始终执行这些步骤。

    环境变量和 PATH
    (如果你已经理解了这一点,可以跳过接下来的三个部分。)

    当您运行时 javac HelloWorld.java , cmd 必须确定在哪里 javac.exe位于。这是通过 PATH 完成的, 环境变量。

    environment variable是一个特殊的键值对(例如 windir=C:\WINDOWS )。大多数随操作系统一起提供,有些是系统正常运行所必需的。它们的列表在启动时传递给每个程序(包括 cmd)。 On Windows ,还有 two types : 用户环境变量和系统环境变量。

    您可以像这样查看环境变量:

    C:\>set
    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\craig\AppData\Roaming
    CommonProgramFiles=C:\Program Files\Common Files
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    CommonProgramW6432=C:\Program Files\Common Files
    ...

    最重要的变量是 PATH .它是一个路径列表,由 ; 分隔.当一个命令输入 cmd 时,列表中的每个目录都将被扫描以查找匹配的可执行文件。

    在我的电脑上, PATH是:

    C:\>echo %PATH%
    C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPower
    Shell\v1.0\;C:\ProgramData\Microsoft\Windows\Start Menu\Programs;C:\Users\craig\AppData\
    Roaming\Microsoft\Windows\Start Menu\Programs;C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\
    msys64\mingw32\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Yarn\bin\;C:\Users\
    craig\AppData\Local\Yarn\bin;C:\Program Files\Java\jdk-10.0.2\bin;C:\ProgramFiles\Git\cmd;
    C:\Program Files\Oracle\VirtualBox;C:\Program Files\7-Zip\;C:\Program Files\PuTTY\;C:\
    Program Files\launch4j;C:\Program Files (x86)\NSIS\Bin;C:\Program Files (x86)\Common Files
    \Adobe\AGL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program
    Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\iCLS Client\;
    C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files
    (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\iCLS
    Client\;C:\Users\craig\AppData\Local\Microsoft\WindowsApps

    当您运行时 javac HelloWorld.java , cmd, 在意识到 javac 后不是 internal command ,搜索 system PATH followed by the user PATH .它机械地进入列表中的每个目录,并检查是否 javac.com , javac.exe , javac.bat , etc.存在。当它找到 javac ,它运行它。如果没有,则打印 'javac' is not recognized as an internal or external command, operable program or batch file.
    您必须将 Java 可执行文件目录添加到 PATH .

    JDK 与 JRE

    (如果您已经理解了这一点,请随时跳过本节。)

    下载 Java 时,您可以选择:
  • Java Runtime Environment (JRE),它包含运行 Java 程序的必要工具,但不包含编译新程序的必要工具——它包含 java但不是 javac .
  • Java Development Kit (JDK),其中包含 javajavac ,以及许多其他开发工具。 JDK 是 JRE 的超集。

  • 您必须确保 您已经安装了 JDK .如果只安装了JRE,则不能执行 javac因为您的硬盘驱动器上没有安装 Java 编译器。检查您的 Windows 程序列表,并确保 Java 包的名称中包含“开发工具包”字样。

    不要使用 set
    (如果您不打算这样做,请随时跳过本节。)

    其他几个答案建议执行一些变体:

    C:\>:: DON'T DO THIS
    C:\>set PATH=C:\Program Files\Java\jdk1.7.0_09\bin

    不要那样做。该命令有几个主要问题:
  • 此命令 删除所有其他内容 来自 PATH并将其替换为 Java 路径。执行此命令后,您可能会发现其他各种命令不起作用。
  • 您的 Java 路径 可能不是 C:\Program Files\Java\jdk1.7.0_09\bin – 你几乎肯定有一个较新版本的 JDK,它会有不同的路径。
  • 新款PATH 仅适用 到当前的 cmd session 。您必须重新输入 set每次打开命令提示符时命令。

  • 点 #1 和 #2 可以用这个稍微好一点的版本解决:

    C:\>:: DON'T DO THIS EITHER
    C:\>set PATH=C:\Program Files\Java\<enter the correct Java folder here>\bin;%PATH%

    但总的来说,这只是一个坏主意。

    找到 Java 路径

    正确的方法是从找到安装 Java 的位置开始。这取决于您安装 Java 的方式。

    exe安装程序

    您已经通过运行安装程序安装了 Java。 Oracle 的安装程序将 Java 版本放在 C:\Program Files\Java\ 下(或 C:\Program Files (x86)\Java\)。使用文件资源管理器或命令提示符,导航到该目录。

    每个子文件夹代表一个 Java 版本。如果只有一个,你已经找到了。否则,请选择看起来像较新版本的那个。确保文件夹名称以 jdk 开头(相对于 jre )。进入目录。

    然后输入 bin那个目录。

    您现在位于正确的目录中。复制路径。如果在文件资源管理器中,请单击地址栏。如果在命令提示符中, copy提示。

    生成的 Java 路径应采用以下形式(不带引号):

    C:\Program Files\Java\jdkxxxx\bin\

    压缩文件

    您已下载包含 JDK 的 .zip。将其提取到某个不会妨碍您的随机位置; C:\Java\是一个可以接受的选择。

    然后找到 bin文件夹中的某处。

    您现在位于正确的目录中。复制其路径。这是Java路径。

    请记住永远不要移动文件夹,因为这会使路径无效。

    打开设置对话框



    那就是编辑对话框 PATH .有多种方法可以访问该对话框,具体取决于您的 Windows 版本、UI 设置以及系统配置的困惑程度。

    尝试其中一些:
  • 开始菜单/任务栏搜索框 » 搜索“环境变量”
  • Win + R » control sysdm.cpl,,3
  • Win + R » SystemPropertiesAdvanced.exe » 环境变量
  • 文件资源管理器 » 在地址栏中输入 Control Panel\System and Security\System » 高级系统设置(最左侧,边栏中) » 环境变量
  • 桌面 » 右键单击​​此电脑 » 属性 » 高级系统设置 » 环境变量
  • 开始菜单 » 右键单击​​计算机 » 属性 » 高级系统设置 » 环境变量
  • 控制面板(图标模式) » 系统 » 高级系统设置 » 环境变量
  • 控制面板(类别模式) » 系统和安全 » 系统 » 高级系统设置 » 环境变量
  • 桌面 » 右键单击​​我的电脑 » 高级 » 环境变量
  • 控制面板 » 系统 » 高级 » 环境变量

  • 其中任何一个都应该带您进入正确的设置对话框。

    如果您使用的是 Windows 10,Microsoft 为您提供了一个 fancy new UI编辑 PATH .否则,您将看到 PATH在它完整的分号镶嵌的荣耀中,挤进了一个单行文本框。尽最大努力在不破坏系统的情况下进行必要的编辑。

    清洁 PATH
    PATH .你几乎肯定有两个 PATH变量(因为用户与系统环境变量)。你需要看看他们两个。

    检查 其他 Java 路径 并删除它们。它们的存在会引起各种冲突。 (例如,如果您在 PATH 中有 JRE 8 和 JDK 11,则 javac 将调用 Java 11 编译器,这将创建版本 55 .class 文件,但 java 将调用 Java 8 JVM,最高仅支持 52 版本,您将遇到 unsupported version errors 并且无法编译和运行任何程序。)通过确保您在 PATH 中只有一个 Java 路径来回避这些问题。 .当你在做的时候,你也可以 uninstall old Java versions , 也。并记住您 don't need to have JDK 和 JRE。

    如果您有 C:\ProgramData\Oracle\Java\javapath , 也删除它 . Oracle意在通过创建 symbolic link来解决升级后Java路径中断的问题。这将始终指向最新的 Java 安装。不幸的是,它通常最终指向错误的位置或 simply not working .最好删除此条目并手动管理 Java 路径。

    现在也是在 PATH上进行一般家政服务的好机会.如果您有与 PC 上不再安装的软件相关的路径,您可以删除它们。你也可以改变路径的顺序(如果你关心这样的事情)。

    添加到 PATH
    现在把你三步前找到的Java路径放到系统中 PATH .

    您的新路径在列表中的位置无关紧要;把它放在最后是一个不错的选择。

    如果您使用的是 Windows 10 之前的 UI,请确保已正确放置分号。应该有一个分隔列表中的每条路径。

    这里真的没什么好说的了。只需将路径添加到 PATH并单击确定。

    套装 JAVA_HOME
    在此期间,您不妨设置 JAVA_HOME以及。这是另一个还应包含 Java 路径的环境变量。许多 Java 和非 Java 程序,包括流行的 Java 构建系统 MavenGradle , 如果设置不正确会抛出错误。

    JAVA_HOME不存在,将其创建为新的系统环境变量。将其设置为不带 bin/ 的 Java 目录的路径目录,即 C:\Program Files\Java\jdkxxxx\ .

    记得编辑 JAVA_HOME升级Java后,也是。

    关闭并重新打开命令提示符

    虽然你修改了 PATH ,所有正在运行的程序,包括cmd,只能看到旧的 PATH .这是因为所有环境变量的列表仅在程序开始执行时才被复制到程序中;此后,它只查询缓存的副本。

    没有好办法 refresh cmd's environment variables ,因此只需关闭命令提示符并再次打开它。如果您使用的是 IDE,请关闭并重新打开它。

    也可以看看
  • What are PATH and other environment variables, and how can I set or use them?
  • How do I set or change the PATH system variable?
  • How to set the path and environment variables in Windows
  • How to set Path environment variables in Windows 10
  • 关于javac 不是内部或外部命令,也不是可运行的程序或批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709041/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com