javax.persistence.*的源代码在哪里可以找到?

16
我可能在这里漏掉了一些非常明显的东西,但是我找不到javax.persistence包中几个类的源代码。
我正在使用EclipseLink作为JPA提供程序。当我尝试Ctrl+左键单击EntityManager接口的方法时,Eclipse说我应该附加源代码,因为它找不到它们。我尝试附加EclipseLink的源代码,但它抱怨无法找到EntityManager的源代码。
为了在Eclipse中查看代码,我需要附加哪些源代码?有人能提供一个链接吗?
5个回答

5
我认为如果您在Eclipse中创建一个JPA项目类型,您将能够看到JPA源代码,或者加载JPA模块。
只有EclipseLink的源代码在eclipselink-src.jar中,您可以从EclipseLink存储库中访问JPA的源代码。

http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/jpa/plugins/

对于JPA来说,源代码并不那么有趣,因为它只是一个规范,所有接口都很少或根本没有真正的代码。


1
谢谢,标有“source”的.jar文件解决了问题!我知道这只是一个规范,大部分都是接口,但我想在今天调试时看一下 - 主要是当你将鼠标悬停在方法上时出现的javadoc。 - pnt
我使用 wget 命令下载了 http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/jpa/plugins/javax.persistence.source_2.0.101.v201206242320.jar,解压后当 Eclipse 要求提供源码时,我只需选择解压后的源码文件夹即可。现在,当我悬停在 javax.persistence.xyz 方法上时,我可以看到源代码。非常感谢。 - user674669
很遗憾,该网址已不再有效,并且在Eclipse项目的项目中也找不到任何类似的内容。 - William

4

2023年更新

可以通过克隆git仓库来查看接口的实际实现:

    git clone git@github.com:jakartaee/persistence.git jakartaee_persistence
    cd $_

    grep -irn 'close()' *
api/src/main/java/jakarta/persistence/EntityManagerFactory.java:133:    
    public void close();
api/src/main/java/jakarta/persistence/EntityManager.java:811:    public void close();

过时的信息

git clone https://github.com/eclipse/javax.persistence.git
cd javax.persistence
grep -ir 'close()' *

== 然后找到一个特定的函数
grep -ir 'close()' *
src/javax/persistence/EntityManager.java:    public void close();
src/javax/persistence/EntityManagerFactory.java:    public void close();
src/javax/persistence/spi/PersistenceProviderResolverHolder.java: in.close();

很遗憾,该URL已不再有效,并且Eclipse GitHub账户中也没有任何类似的内容。 - William
https://github.com/jakartaee/persistence 看起来对我来说是存在的,并且显示该项目可以通过git@github.com:jakartaee/persistence.git的ssh访问。 - Chris

1

如果你使用 maven

  1. 执行 mvn eclipse:eclipse -DdownloadSource=true 命令,下载源文件到本地的 .m2 仓库。
  2. 在 Eclipse 中刷新项目。

如果你使用 m2eclipse 插件,

  1. 右键点击项目 --> Maven --> 下载 Sources。
  2. 右键点击项目 --> Maven --> 更新项目配置。

0

可能您使用的类库 jar 和源码 jar 版本不一致?


我不这么认为 - 这两个都是几周前我下载的同一个存档中提取的。分发应该是同步的。此外,源代码在一个压缩文件中。 - pnt

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接