我尝试运行 shell 脚本来运行 Java 中的应用程序。由于版权问题,我无法发布整个脚本。但是执行Java的行如下(经过一些修改)
$java_vm -Xmx128m -classpath "$CLASSPATH" -DDISPLAY=$DISPLAY -DPATH=$PATH -Djava.library.path=. -DEXEC_PLAT=$plat -jar $kp_dir/lib/SomeJAR.jar $args 2>&1
其中 $java_vm 是 java 的路径
执行脚本时,出现以下错误:
错误:无法找到或加载主类文件。NVIDIA 引起原因:java.lang.ClassNotFoundException:Files.NVIDIA
我在 WSL2 CentOS 系统中运行它。我发现可以通过完全删除
-DPATH=$PATH
选项来修复此错误。但是,这样做会删除应用程序访问互联网的能力(可能是因为删除了一些重要的联网路径)
这是我的 PATH 变量
/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin:/usr/lib/jvm/jre-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/WireGuard/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/usbipd-win/:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/Users/myName/AppData/Local/Programs/Python/Python312/Scripts/:/mnt/c/Users/myName/AppData/Local/Programs/Python/Python312/:/mnt/c/Users/myName/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/myName/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/myName/AppData/Local/GitHubDesktop/bin:/mnt/c/Program Files/KS-Wireshark:/root/bin
我尝试在WSL2 CentOS系统中运行shell脚本。我希望它能正常运行,但我得到了这个错误,可以通过删除 -DPATH 选项来解决。但这样做会删除应用程序联网功能
问题是它找不到您在这部分路径变量中传递的
Files.NVIDIA
::/mnt/c/Program Files/NVIDIA Corporation/NVIDIA
。
确保文件
Files/NVIDIA
存在并正常运行。