java classpath设置 - Intellij无法在导入时解析符号




classpath是什么 idea添加jar包 (17)

对于不同的库和不同的项目,此问题会间歇性地发生。 尝试导入库时,将识别包,但无法解析类名。

如果在import语句中,我right-click -> Goto -> the package's declaration ,我看到侧窗格中显示的所有反编译类 - 包括我需要的 - 如果我尝试自动完成import语句,我注意到我需要的课程没有在下拉列表中显示。

我已经尝试使缓存无效,不起作用。 我找不到任何类冲突 - 我的类路径中没有其他jar文件具有相同的包名称。 我可以将此类导入其他项目。

请看屏幕截图:

有人有线索吗?


Answers

这对我来说是编辑.idea文件夹中的包文件,因为我不小心将源添加到此jar库中,并且android无法通过删除b / m图片库错误中标记的源行来解析它。

然后重建gradle和bam问题解决了。


检查模块依赖性。

  1. 项目结构( Ctrl + Alt + Shift + S )。
  2. 模块
  3. 选择您的问题模块。
  4. 更改窗口“依赖关系”顶部的选项卡。
  5. 检查需要的库(可能需要在选项卡'库中添加指定的库)或模块已在此处列出,并且它具有正确的范围(主要是'complile')。

我遇到了类似的问题,Mike的评论帮助我朝着解决它的方向前进。
虽然所需的库也是我项目中模块的一部分,但它需要更改范围。 在模块依赖项中,我将范围更改为“ 编译 ”而不是“ 测试 ”,现在它对我来说很好。


当我尝试构建一个新的java项目时,我也多次遇到此错误。

以下是我如何解决这个愚蠢问题的步骤。

  1. 创建一个空项目,并创建新目录src/main/java
  2. 创建源包net.gongmingqm10.sketch
  3. 使用gradle wrappergradle idea为项目构建gradle stuff。
  4. build.gradle文件中添加一些依赖build.gradle ,并gradle build ,重新导入项目。
  5. 在现有的net.gongmingqm10.sketch包中创建User.javanet.gongmingqm10.sketch
  6. 我尝试在User.java中使用import School时收到错误。
  7. Intellij一直抱怨无法在导入时解析符号。

解:

首先构建项目,并将main / java标记为源根。 创建一个名为net.gongmingqm10.sketch 的新目录 。 将旧麻烦包中的所有文件移动到新包中。

根本原因:

源代码目录树

正如你从树上看到的那样。 我有一个名为net.gongmingqm10.sketch的目录。 但我们真正需要的是3级目录:net-> gongmingqm10-> sketch

但在我在Intellij中完成项目构建之前,我创建了一个名为net.gongmingqm19.sketch新目录,它将为我提供一个名为net.gongmingqm19.sketch的真实目录。

当我们尝试导入它时。 显然,intellij如何在名为abc weired目录下导入文件。


您可以尝试使缓存无效并重新启动intellij,在许多情况下它会有所帮助。

文件 - >使高速缓存/重新启动无效


这可能有多种原因。 在我的情况下,它是错误的源根问题。 无效缓存无法与其他解决方案一起使用。

检查模块源根。

  1. 项目结构(Ctrl + Alt + Shift + S)。

  2. 模块

  3. 选择您的问题模块。

  4. 更改窗口“源”顶部的选项卡。

  5. 删除不需要的源根。 保留一个并在此根目录中添加src和测试源根。


我找到了原因!

在我的情况下,我添加一个jar文件包含一些java源文件,但我认为java源码不好,在Intellij Idea依赖库中它自动添加源码,所以在Editor中导入是BAD,只需删除“项目结构“ - >”图书馆“,它适合我。


我尝试使缓存失效并重新启动,但唯一对我有用的是彻底清除.idea目录,然后从头开始创建一个新项目。


一样的问题。 如果这些方法不起作用。 您可以尝试从本地maven存储库中删除lib,然后重新导入到pom。

最后它对我来说很好。


有同样的问题,直到我注意到src文件夹被标记为根源而不是java ! 改为只有java(src / main / java)作为源根解决了我的问题


我从@jossef-harush和@matt-leidholm找到以下答案, 从另一个链接有用

  • 在IntelliJ编辑器中,单击红色关键字(例如Integer并按ALT + ENTER (或单击灯泡图标)
  • 从意图菜单中选择Setup JDK

  • 单击“ Configure

  • 在我的例子中, JDK路径不正确(指向/opt/jdk1.7.0_51而不是/opt/jdk1.7.0_65

  • 单击...并浏览到正确的JDK路径

  • 让我们清除缓存


IntelliJ在解决依赖关系方面存在问题。 请尝试以下方法:

  1. 右键单击pom.xml - > Maven - > Reimport
  2. 再次右键单击pom.xml - > Maven - >生成源和更新文件夹

想念io ? 尝试import org.openide.util.io.ImageUtilities


@Anton Dozortsev我被一种类似的行为吓到了; 我最终重新安装了IDE很多次,只是在删除IDEA应用程序,所有缓存,首选项等后才解决问题。

我在过渡期间尝试了各种步骤(如重启,失效,删除.idea*.iml文件等)。

事实证明,问题是由IntelliJ的idea.max.intellisense.filesize设置引起的。 我把它设置为100KB,小于我的依赖项大小,导致IntelliJ显示为未知,就像你的截图一样。

固定:

  1. 单击“帮助” - >“编辑自定义属性”

  2. 将属性设置为更大的值; 默认值为2500KB idea.max.intellisense.filesize=2500


我的导入Maven项目遇到了类似的问题。 在一个模块中,它无法在导入时解析其他模块的一部分(是的,可以解析该模块的一部分)。

我将“Maven主目录”更改为更新的版本解决了我的问题。

更新:好一小时,回到破碎状态......


文件 - >使缓存无效/重新启动并构建项目


有很多Spy框架可用于此目的,请检查log4jdbc ,我认为这是你正在寻找的。

特征

  • 完全支持JDBC 3和JDBC 4!
  • 易于配置,在大多数情况下,您需要做的就是将驱动程序类名更改为net.sf.log4jdbc.DriverSpy并将“jdbc:log4”添加到现有的jdbc URL,设置日志记录类别并准备好走!
  • 在记录的输出中,对于预准备语句,绑定参数会自动插入到SQL输出中。 这大大提高了许多情况下的可读性和调试性。
  • 可以生成SQL计时信息,以帮助确定SQL语句运行的时间,帮助识别运行速度太慢的语句,并使用附带的工具对此数据进行后处理,以生成分析报告数据,以便快速识别应用程序中的慢速SQL 。
  • 生成SQL连接编号信息以帮助识别连接池或线程问题。 适用于任何基础JDBC驱动程序,JDK 1.4及更高版本以及SLF4J 1.x.
  • 开源软件,根据业务友好的Apache 2.0许可证授权

用法

  • 将log4jdbc jar(基于JDK版本)放入应用程序的类路径中。
  • 选择要使用的日志系统,支持log4j,logback,commons logging..etc
  • 在应用程序的配置中将JDBC驱动程序类设置为net.sf.log4jdbc.DriverSpy。 在许多情况下,正在监视的底层驱动程序将自动加载,无需任何其他配置。
  • 将jdbc:log4添加到您正在使用的正常jdbc URL。

    例如,如果您的普通jdbc url是jdbc:derby:// localhost:1527 // db-derby-10.2.2.0-bin / databases / MyDatabase,那么您可以将其更改为:jdbc:log4jdbc:derby:// localhost: 1527 // DB-德比10.2.2.0斌/数据库/ MyDatabase的

  • 设置记录器。

    jdbc.sqlonly :仅记录SQL。 在预准备语句中执行的SQL会自动显示,其绑定参数将替换为该位置绑定的数据,从而大大提高了可读性。 1.0

    jdbc.sqltiming :记录SQL,执行后,包括SQL执行时间的时间统计信息。 1.0

    jdbc.audit :记录除ResultSet之外的所有JDBC调用。 这是一个非常庞大的输出,除非追踪特定的JDBC问题,否则通常不需要。 1.0

    jdbc.resultset :更加庞大,因为记录了对ResultSet对象的所有调用。 1.0

    jdbc.connection :记录连接打开和关闭事件以及转储所有打开的连接号。 这对于追踪连接泄漏问题非常有用。





java intellij-idea import classpath