首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSC错误的java依赖项

VSC错误的java依赖项
EN

Stack Overflow用户
提问于 2022-02-07 09:28:14
回答 1查看 78关注 0票数 0

我在Visual代码中有一个奇怪的行为,试图用VSC调试器调试一个简单的代码--我有一个运行时错误,使用Gradle运行相同的代码--代码工作!

问题是在VSC调试模式下运行代码java代码试图加载两个库,即commons-cli-1.2.jar和新commons-cli-1.5.0.jar,在旧的库中有些方法没有实现,代码上升为java.lang.NoSuchMethodError

代码语言:javascript
复制
[144.386s][info][class,load] java.lang.Throwable$WrappedPrintStream source: jrt:/java.base
java.lang.NoSuchMethodError: 'boolean org.apache.commons.cli.Options.hasShortOption(java.lang.String)'
    at org.apache.commons.cli.DefaultParser.handleShortAndLongOption(DefaultParser.java:473)
    at org.apache.commons.cli.DefaultParser.handleToken(DefaultParser.java:542)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:712)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:679)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:660)
    at it.fox.dafne.App.main(App.java:38)

java代码是:

代码语言:javascript
复制
  public static void main(String[] args) throws Exception {
    Options options = new Options();
    options.addOption("f", PROPERTY_FILE, true, "path to the properties file");
    try {
      var parser = new DefaultParser();
      CommandLine commandLine = parser.parse(options, args);
      String propertyFile = "";
      ...
      ...

在ClassPath中,没有旧库的迹象:

代码语言:javascript
复制
   <classpathentry  sourcepath="/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.5.0/e7e198ff537780c2835e484b0ffccd2960074504/commons-cli-1.5.0-sources.jar" kind="lib"  path="/Users/fox/.gradle/caches/modules-2/files-2.1/commons-   cli/commons-cli/1.5.0/dc98be5d5390230684a092589d70ea76a147925c/commons-cli-1.5.0.jar">

那么,Java如何才能找到旧版本呢?

Visual不应该使用classPath文件中的java .classpath

启动JVM时启用-verbose:class,错误非常明显:

代码语言:javascript
复制
[7.861s][info][class,load] org.apache.commons.cli.Options source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.862s][info][class,load] org.apache.commons.cli.Option source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.864s][info][class,load] org.apache.commons.cli.OptionValidator source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.867s][info][class,load] org.apache.commons.cli.CommandLineParser source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.867s][info][class,load] org.apache.commons.cli.DefaultParser source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.5.0/dc98be5d5390230684a092589d70ea76a147925c/commons-cli-1.5.0.jar
[7.868s][info][class,load] org.apache.commons.cli.ParseException source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.868s][info][class,load] org.apache.commons.cli.MissingArgumentException source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.869s][info][class,load] org.apache.commons.cli.MissingOptionException source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.870s][info][class,load] org.apache.commons.cli.UnrecognizedOptionException source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.870s][info][class,load] org.apache.commons.cli.AmbiguousOptionException source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.5.0/dc98be5d5390230684a092589d70ea76a147925c/commons-cli-1.5.0.jar
[7.871s][info][class,load] org.apache.commons.cli.CommandLine source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar
[7.872s][info][class,load] org.apache.commons.cli.Util source:  file:/Users/fox/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.2/2bf96b7aa8b611c177d329452af1dc933e14501c/commons-cli-1.2.jar

在Gradle中,依赖关系很好:

代码语言:javascript
复制
MacBook-Pro:plcProject fox$ gradle dafne:dependencies | grep commons-cli
|  |  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |     +--- commons-cli:commons-cli:1.2 -> 1.5.0
+--- commons-cli:commons-cli:1.5.0
+--- commons-cli:commons-cli:1.5.0 (n)
+--- commons-cli:commons-cli:1.5.0 (n)
|  +--- commons-cli:commons-cli:1.5.0
|  |  |  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |  |     +--- commons-cli:commons-cli:1.2 -> 1.5.0
+--- commons-cli:commons-cli:1.5.0
|  |  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |     +--- commons-cli:commons-cli:1.2 -> 1.5.0
+--- commons-cli:commons-cli:1.5.0
|  +--- commons-cli:commons-cli:1.5.0
|  |  |  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |  |  |  +--- commons-cli:commons-cli:1.2 -> 1.5.0
|  |  |  |     +--- commons-cli:commons-cli:1.2 -> 1.5.0
+--- commons-cli:commons-cli:1.5.0

Gradle找到一些传递的依赖项,但决定使用新版本的库,而不是旧版本的:

所以问题是:

  • VSC ClassPath是一等舱?

  • 怎么可能用Gradle启动代码,而使用VSC却不起作用?

谢谢,

S.

EN

回答 1

Stack Overflow用户

发布于 2022-02-13 15:24:57

代码似乎没问题。

这个问题解决了清理Visual代码缓存中可能有问题的地方。要清除缓存,您必须使用“命令调色板”(⇧⌘PF1 on Mac;Ctrl+Shift+PF1 on Windows),并使用以下命令:" Java :洁净Java语言工作区“

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

https://stackoverflow.com/questions/71016201

复制
相关文章

相似问题

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