草庐IT

java - JDK、JRE、Java : Version Confusion

(注意:这些问题及其答案来自2011年,展示了当时的世界。)虽然我(还)不是真正的Java开发人员,但我觉得我现在应该知道这一点,但我仍然很困惑。我的问题有两个部分:所谓的(如我所见)“SunJDK”、OpenJDK和GCJ有什么区别?在不同的时间里,我看到了以下每一个,这让我很难理解哪些版本号实际上适用于什么。有人可以帮我解决这个问题吗?Java6Java1.6JDK6JDK1.6JRE1.6JVM11.0注意:我确实了解JDK(Java开发工具包)和Java运行时环境之间的区别。然而,我并不完全清楚JRE和JVM之间的区别,尽管我知道JVM是/做什么。

java - 是否有 JDK 或 Guava 方法可以将 null 转换为空列表?

在JDK或者GoogleGuava中是否有这样的方法publicstaticCollectionsafe(Collectioncollection){if(collection==null){returnnewArrayList(0);}else{returncollection;}}例如,如果某些内容返回空列表,则可以很容易地在增强的循环中不崩溃for(Stringstring:CollectionUtils.safe(foo.canReturnANullListOfStrings())){//dosomething}不会崩溃。我环顾四周,但找不到任何这样的方法,我想知道我是否错过了

JDK 1.8.0_161 中的 Java Mission Control 在 Mac OS X 上启动时卡住

我正在尝试在MacOSXHighSierra(10.13.2,2018年1月的补充更新)上启动JDK1.8.0_161中提供的JavaMissionControl,并且JMC应用程序被卡住,即我无法在JVM浏览器面板中浏览。由于我安装了其他以前的JDK,因此我已经成功检查了以下版本的JMC:1.8.0_1211.8.0_1441.8.0_151所以这个问题对于JDK1.8.0_161来说是非常具体的。(要查看您的JDK,请运行命令/usr/libexec/java_home-V)(要运行以前的JMC,即/Library/Java/JavaVirtualMachines/jdk1.8.0

maven-2 - 在 Maven 中使用不同的 artifactid 构建相同的项目(基于使用的 JDK)

我有一个场景,我的项目需要在不同的JDK中编译,并且生成的工件名称应该根据使用的JDK不同而不同。例如,如果项目名称是MyProject并且我调用mvninstall那么它需要在JDK1.4和JDK1.5中编译,最后我得到同一个项目的两个jar(MyProjectJDK14-1.0和MyProjectJDK15-1.0)。有没有可能做到这一点? 最佳答案 Maven这样做的方法不是更改工件的finalName,而是使用分类器。例如:...maven-jar-plugin${envClassifier}...jdk161.6jdk16

java - 如何在 JDK 7 中使用旧的 javadoc 样式/主题?

JDK7中用于javadoc的新主题对我来说很难阅读。它可能不漂亮,但我真的更喜欢旧主题。除了安装旧的JDK并在它们之间切换之外,我可以以某种方式使用旧的doclet吗? 最佳答案 不得不承认我还没有体验过这个,但我发现你可以为javadoc自定义CSS。Here是描述。你可能有兴趣运行这个:C:>javadoc-stylesheetfileC:\user\exampleStylesheet.csscom.examplePackage那里还声明它会创建“stylesheet.css”文件,因此您应该看到它的外观以及可以在那里覆盖的内

64-bit - 为什么我应该使用 64 位 JDK 而不是 32 位版本?

我使用Eclipse和64位Windows并开发Java桌面应用程序。到目前为止,我只使用了32位的JDK,但是Java开发是否有任何理由更改为64位的JDK? 最佳答案 不,对于您的开发时间Activity,32位可能就足够了。最新的JVM支持指针压缩,但除此之外,64位版本的应用程序需要更多内存才能运行。如果您的应用程序需要寻址更多内存(32位应该寻址4Gb,但操作系统考虑有时会减少),请仅使用64位。除了浪费一点内存之外,64位版本应该不是问题,但有趣的是,我听到提示的通常坚如磐石的JVM的所有莫名其妙的崩溃都在64位版本中。

java - 旧的 JaxB 和 JDK 8 元空间内存不足问题

我们正在开发一个10多年以来开发的业务应用程序(超过100万个LOC)。在切换到JDK8时,我们遇到了JDK8元空间的问题。这似乎与com.sun.xml.ws:webservices-rt:1.4(Metro1.4)中引用的JaxB-Version有关。由于应用程序中的紧密链接以及通过JaxB创建类/实例的遗留问题,因此动态切换旧库并不容易。目前我们正在研究这个问题。我们创建了一个重现此行为的示例程序:importjava.io.ByteArrayInputStream;importjavax.xml.bind.JAXBContext;importjavax.xml.bind.JAX

macos - 如何在 Mac OS X 上获取 JDK 1.5

我必须为仍在运行JDK1.5的遗留应用程序编写一些代码。不幸的是,看起来OSX实际上并没有安装1.5JDK。它只是链接到1.6:/System/Library/Frameworks/JavaVM.framework/Versions$ls-llrwxr-xr-x1rootwheel5Apr2611:531.3->1.3.1drwxr-xr-x3rootwheel102Feb1115:331.3.1lrwxr-xr-x1rootwheel10Apr2611:531.4->CurrentJDKlrwxr-xr-x1rootwheel10Apr2611:531.4.2->CurrentJDK

javafx - 在哪里可以找到 JDK 8/JavaFX 8 源代码?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭7年前。Improvethisquestion我想重写FXMLLoader的实现并重新编译JDK8。JDK8/JavaFX8的源代码在哪里可以找到? 最佳答案 引自thisanswer:对于Java8,JavaFX的公共(public)部分的源代码实际上是作为src.zip的兄弟在JDK安装中放置的:javafx-src.zip-在您的正常JDKJ

仅使用 JDK6 进行 Base64 解码

ThisquestionwithregardtoJDK5说,JDK5没有提供实现,但是JDK6应该有一个sun.misc.Base64Decoder。据我所知,JDK没有提供这个类,我无法在其中找到任何其他类似的类那么,JDK6的情况如何?我知道那里有很多实现,比如Commons和JBoss的,但是我们有一个限制性的3rd方库政策,所以我试图避免重新发明轮子。 最佳答案 在Java中有官方(非sun.misc)实现,但它不是任何人想的。java.util.prefs.AbstractPreferences是具有这样做的必要方法的那个