gpt4 book ai didi

java - 在 Windows 上使用 Ubuntu 的子系统 'make' 会出现 java 错误

转载 作者:行者123 更新时间:2023-12-04 19:07:13 25 4
gpt4 key购买 nike

我正在尝试执行 Makefile 作为我类(class)的一部分。它分别是 CUP 和 Jflex 中的解析器和词法分析器。在 Windows Powershell 中无法做到这一点,所以我被建议使用 Linux,我的同事也能够在 Windows 上的 Ubuntu 子系统上运行它。
所以我下载了ubuntu:

https://www.microsoft.com/en-us/p/ubuntu/9nblggh4msv6?activetab=pivot:overviewtabfrom MS Store


然后允许在 Windows 设置中使用 Linux 子系统,但是现在,当我尝试运行时 make在 bash 中,我收到此错误:
mkdir -p bin
java -jar lib/jflex-1.8.2.jar -d src/ src/Lexer.lex
make: java: Command not found
make: *** [Makefile:10: bin/SC.class] Error 127
你知道这是为什么吗?我的同事在桌面上做了​​这个,显然是在第一次做 make 之后
当时,bash 询问他是否要安装 JDK 8,并且在 bash 安装之后,它就起作用了。但是现在,当他尝试在他的 Windows 笔记本电脑上执行此操作时,他遇到了和我一样的问题。另请注意,我的机器上安装了 JDK 15

最佳答案

您可以在 WSL 中运行包括 Java 在内的所有 Windows 10 可执行文件,但请注意,GNU/Linux 不会像 Windows 那样默认添加“.EXE”(Windows 使用 PATHEXT=.COM;.EXE;.BAT ... 用于此目的),而 WSL 不会必须在 bash PATH 上有 Windows 二进制文件。
例如我安装的 JDK14 是在 Windows C:\java\jdk-14 == WSL /mnt/c/java/jdk-14 :

 /mnt/c/java/jdk-14/bin/java -version
=> Fails with
bash: /mnt/c/java/jdk-14/bin/java: No such file or directory
/mnt/c/java/jdk-14/bin/java.exe -version
java version "14" 2020-03-17
您可以使用以下一项或多项来修复您的 makefile/run 问题:
  • 尝试将您的 WSL bash PATH 设置为包含 Windows JDK 并将您的 makefile 命令编辑为 java.exe不是 java
      export PATH=/mnt/c/java/jdk-14/bin:$PATH
    java.exe -version
    => Should work
  • 或者符号链接(symbolic link)javajava.exe - 假设 PATH 包含 .
      export PATH=.:$PATH
    ln -s /mnt/c/java/jdk-14/bin/java.exe java
    java -version
    => Should work
  • 在 WSL 上安装 Java - @Samuel V. 建议的链接可以使用,但如果您需要特定的 JDK,下载 reference Linux release 会更容易。 .
  • 关于java - 在 Windows 上使用 Ubuntu 的子系统 'make' 会出现 java 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66144893/

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