首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows -如果我在VSCode驱动器(驱动C)以外的其他驱动器运行该项目,则为java.lang.ClassNotFoundException

问Windows -如果我在VSCode驱动器(驱动C)以外的其他驱动器运行该项目,则为java.lang.ClassNotFoundException
EN

Stack Overflow用户
提问于 2022-03-30 17:45:48
回答 1查看 973关注 0票数 0

在Windows重新安装的情况下,我喜欢在其他驱动器中组织代码,Windows驱动器除外。我在这两个地点进行测试。在Windows驱动器中,项目可以正常运行,但另一方面,驱动器D中的项目由于导致错误java.lang.ClassNotFoundException而无法运行。我注意到,如果项目中没有任何库,终端中的命令是'-cp' 'D:\งาน\Java\Project\MyApp\bin' 'com.winrecker.app.App"。这样,项目就可以正常运行,而不会出现任何错误。在此之后,我将.jar库复制到lib文件夹中并再次运行,该项目具有与上面提到的相同的错误。有任何方法可以禁用vscode来生成导致错误的.argfile吗?我试图在.launch.json文件夹中创建.vscode。然后按以下方式添加配置

launch.json

代码语言:javascript
复制
{
  "configurations": [
    {
      "type": "java",
      "name": "Launch Game",
      "request": "launch",
      "mainClass": "com.untitled.game.Game",
      "projectName": "Alien Hunter",
      "vmArgs": "-Djava.library.path=lib/lwjgl/native/windows",
      "shortenCommandLine": "none"
    }
  ]
}

settings.json

代码语言:javascript
复制
{
    "java.project.sourcePaths": [
        "src",
        "lib",
        "res"
    ],
    "java.project.outputPath": "bin",
    "java.project.referencedLibraries": [
        "lib/**/*.jar"
    ]
}

再次运行时,该项目可以在Windows驱动器以外的任何驱动器上运行。我很好奇为什么shortenCommandLine和create .argfile会导致项目中的错误,而不是在Windows中。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2022-04-11 08:01:26

官方文件说:

shortenCommandLine -当项目有长类路径或大VM参数时,启动程序的命令行可能超过操作系统允许的最大命令行字符串限制。此配置项提供了缩短命令行的多种方法。默认为auto。

  • 不使用标准命令行'java选项类名args‘启动程序。
  • java清单--将类路径参数生成为临时classpath.jar文件,并使用命令行'java -cp classpath.jar classname args‘启动程序。
  • argfile --将类路径参数生成为临时参数文件,并使用命令行'java @argfileargs‘启动程序。此值仅适用于Java 9及更高版本。
  • 自动检测命令行长度,并通过适当的方法确定是否缩短命令行。

看起来,D驱动程序中文件夹的路径比C驱动程序中的路径要长,因此Java扩展会自动创建.argfile文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71681828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档