Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将sun.nio.fs代码加载到IntelliJ中?_Java_Intellij Idea_Jar_Openjdk - Fatal编程技术网

Java 如何将sun.nio.fs代码加载到IntelliJ中?

Java 如何将sun.nio.fs代码加载到IntelliJ中?,java,intellij-idea,jar,openjdk,Java,Intellij Idea,Jar,Openjdk,我正在尝试在UnixFileSystemProvider中加载代码,以便调试。IntelliJ生成源存根,但找不到库 // IntelliJ API Decompiler stub source generated from a class file // Implementation of methods is not available 这让我感到困惑,因为我知道它存在于openjdk中,这可能是因为我正在运行openjdk,所以我可以访问它的源代码 我使用findjar.com,一个非常

我正在尝试在
UnixFileSystemProvider
中加载代码,以便调试。IntelliJ生成源存根,但找不到库

// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
这让我感到困惑,因为我知道它存在于openjdk中,这可能是因为我正在运行openjdk,所以我可以访问它的源代码

我使用findjar.com,一个非常好的资源,我希望它有任何基本的资源,来搜索它,并希望在Maven回购协议或其他东西中找到它,但什么都没有找到


我如何让我的IDE知道这个源代码,或者通过自己获取一个jar,给它Maven坐标,或者其他方式?

下面是一个线程,它应该回答获取源代码的问题:

在我的intellij版本中,我通过定义jvm/jdk添加了jdk源代码,然后在“项目结构”->“源路径”选项卡中,我将其指向与我的java版本匹配的src.zip文件

jar:///Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/src.zip!/

要关联jar文件的源,可以按如下方式定义库:

<component name="libraryTable">
  <library name="SBT: com.typesafe.play:play-datacommons_2.10:2.2.3">
    <CLASSES>
      <root url="jar://$USER_HOME$/.ivy2/cache/com.typesafe.play/play-datacommons_2.10/jars/play-datacommons_2.10-2.2.3.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES>
      <root url="jar://$USER_HOME$/.ivy2/cache/com.typesafe.play/play-datacommons_2.10/srcs/play-datacommons_2.10-2.2.3-sources.jar!/" />
    </SOURCES>
  </library>
</component>

在此之前,有两个警告:我假设您正在调试来自OpenJDK的代码(它的源代码为
sun.nio.fs.UnixFileSystemProvider
),而我使用的IntelliJ版本是最终版本,我不确定这在社区版中是否也适用;如果是这样,请告诉我,我会编辑我的答案

您需要获取源代码,然后“附加”它以使其与字节码匹配(因此,请确保您获取的源代码是与编译版本对应的源代码)

1-获取源代码 对于v6和v7:

如果您使用的是基于debian的Linux发行版,最好安装来自deb存储库的源代码:

sudo apt-get install openjdk-7-source
或使用
资质

aptitude install openjdk-7-source
源代码将位于/usr/lib/jvm/java version/src.zip中

或者,也可以在此处下载OpenJDK 7的一个版本:

对于v6:

如果您使用的是OpenJDK v8,那么下载源代码的过程会变得有点复杂,它涉及到使用
mercurial
从OpenJDK的网站克隆存储库(这里要解释如何使用mercurial太长了,所以我希望您使用的是v6或v7)

2-将源代码附加到二进制文件 当您从IntelliJ获得反编译器存根时,单击“附加源…”:

然后浏览到源代码所在的位置(目录或zip文件),并选择它:


如果一切正常,您现在应该可以浏览源代码了。

问题似乎是关于获取JDK中未提供源代码的
sun
类。不,UnixFileSystemProvider仍然无法访问。您是如何获得源代码的?代码中不是
UnixFileSystemProvider.java
?另外,您正在使用哪个版本的OpenJDK?