Articles of openjdk

部署Java“并排”和工具的Linux标准?

问题: 对于在许多不同平台上工作并需要在不同版本的Java,Android NDK,OpenGL等上进行回归testing的开发人员,经常遇到的问题是试图安装JRE和JDK的多个版本。 通常在linux(archlinux)中手动部署/提取许多版本的NDK,JDK,JRE和J2EE环境。 但是,自动化安装软件包在安装SDK和JRE方式/位置方面不是标准化的,在安装过程中经常会报告碰撞。 题: 是否有Oracle,(Sun)或其他已被采用的描述的“标准”方法(例如,设置代理/垫片,符号链接等的最佳实践? 是否有任何常见的GUI工具,脚本(如archlinux-java),让我“切换”活动的Java环境? (指向不同方向的符号链接等)? 有没有一个工具,允许用户点击“添加新的Java平台”,并让他们分别指定JRE和JDKpath(如分别更新8_u34和8_u49)。 笔记: archlinux-java只支持openjdk和java-8-oracle,但不支持以前版本的oracle java,(6或7),( https://wiki.archlinux.org/index.php/java#Switching_between_JVM ) 希望这个代理/填充所有不同的java版本的“一个工具”将在更新中更新。 通过手动安装不同的Java版本,给定这将打破更新,但这是点 – testing不同的,旧的和未更新的版本。 在这种情况下,机器上有2到6个左右的部署。 最后发生的事情是/ opt被使用(有时),和usr / lib / jvm,甚至其他文件夹也被其他安装引入。 所有部署最好在“opt”或者甚至“lib”下的一个树中,以便更改脚本/variables。 谢谢你的想法!

为什么Atmel AT91SAM9G25 SoC电路板上的OpenJDK太慢了?

你好我在ARM设备上运行Java( http://www.acmesystems.it/arietta ) 而且速度非常慢, time java的time java结果是: openjdk version "1.8.0_66-internal" OpenJDK Runtime Environment (build 1.8.0_66-internal-b17) OpenJDK Zero VM (build 25.66-b17, interpreted mode) real 0m51.499s user 0m1.656s sys 0m46.477s 眼镜: CPU Atmel AT91SAM9G25 SoC (ARM9 @ 400Mhz) DDR2 Ram 128 or 256 MByte 任何想法如何使其更快?

问题与Linux Mint上的Netbeans

我刚刚在Oracle网站上使用脚本安装了Netbeans,并且遇到了一些麻烦。 打开Netbeans之后,我去打开一个简单的.java文件来testing它,并得到这个错误: “缺lessJDK并需要运行一些Neatbeans模块,请使用–jdkhome命令行选项指定JDK安装,或者参阅http://wiki.netbeans.org/FaqRunningOnJre了解更多信息。” 我有OpenJDK,我不确定使用–jdkhome命令行选项是什么意思。 我还访问了wiki,这是关于完整安装JDK,我不认为我需要这样做。 任何帮助表示赞赏。

“apt-get install openjdk-8-jdk”和手动下载* .tar.gz之间有什么区别?

我想在Ubuntu上安装openjdk。 我find了两种方法来安装它。 首先是在terminal上input“sudo apt-get install openjdk-8-jdk”。 第二个是下载二进制文件如* .tar.gz,然后解压文件并设置环境variablesJAVA_HOME&PATH。 那么,这两种方法有什么区别? 我的意思是,会导致不同的结果? 非常感谢。

在multithreadingTomcat服务器中访问全局variables

编辑:我已经find了单例的构造函数被调用多次,所以它似乎是不同类加载器不止一次地加载类。 我如何在Tomcat中创build全局单例? 我一直在使用Google,但目前还没有运气。 我有一个单例对象,我这样构造: private static volatile KeyMapper mapper = null; public static KeyMapper getMapper() { if(mapper == null) { synchronized(Utils.class) { if(mapper == null) { mapper = new LocalMemoryMapper(); } } } return mapper; } 类KeyMapper基本上是一个HashMap的同步包装,只有两个函数,一个是添加一个映射,一个是删除映射。 当我在32位Windows机器上运行Tomcat 6.24时,一切正常。 然而,当在64位的Linux机器上运行(CentOS 5.4和OpenJDK 1.6.0-b09)时,我添加一个映射并打印出KeyMapper使用的HashMap的大小来validation添加的映射(即validation大小= 1)。 然后我尝试检索另一个请求的映射,我一直得到空,当我检查的HashMap的大小为0我相信映射不会意外地被删除,因为我已经注释掉所有调用删除(我不使用清除或任何其他mutators,只是得到和放)。 请求正在通过Tomcat 6.24(configuration为使用至less4个线程的200个线程),并且将-Xnoclassgc传递给了jvm,以确保该类不会无意中被垃圾收集(jvm也以-server模式运行)。 我还为KeyMapper添加了一个finalize方法,如果它被垃圾收集来validation它没有被垃圾回收,就打印到stderr。 我在我的智慧结束,我无法弄清楚为什么一分钟HashMap中的条目在那里,下一个不是:(

openjdk仅在从terminal启动时显示正确的应用程序图标

我在Ubuntu 12.04 LTS上使用openJDK,并且启动打包在jar包中的GUI应用程序时出现了一个奇怪的问题。 当我用“java -jar archivename.jar”从terminal启动应用程序时,它在侧面板中显示正确的应用程序图标。 但是当我通过双击存档图标从鹦鹉螺开始它显示标准杜克图标。 它也显示图标,当我通过双击鹦鹉螺的shell脚本启动应用程序。 脚本内容很简单: #!/bin/bash java -jar archievename.jar 这是一些错误,或者是什么问题? 我怎样才能让它显示应用程序图标时,也从鹦鹉螺开始,但没有脚本? 老实说,这不是一个大问题,因为我认为使用脚本来启动应用程序通常是在Linux中执行的方法,即使是使用C ++编写的本地应用程序。 我只是好奇。 谢谢。

Android Studio找不到我的JDK

我在我的Linux Mint 15机器上安装了Android Studio,我试图将它与LibGDX一起使用。 在LibGDX中,我创build了一个在高级创build菜单中select了intelliJ的项目。 在Android Studio中,当我转到configuration>项目默认值>项目结构时,JDK位置为空,并在底部显示“请select一个有效的JDK目录”。 我安装了OpenJDK,当我在terminal中运行java -version ,它返回: "java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)" 当我在返回的terminal中键入javac -version时: "javac 1.7.0_80" 当我打开我在Android Studio中的LibGDX中创build的项目时,它在底部显示: "Error: The supplied javaHome seems to be invalid. I cannot find the java executable. Tried location: /home/myname/Android/Sdk/bin/java" 我已经将JAVA_HOME环境variables添加到我的configuration文件中,甚至尝试在所述"/home/myname/Android/Sdk/bin/java"文件夹中粘贴java可执行文件,但仍然返回相同的错误。 如果有人知道一个修补程序,请让我知道! 谢谢。 编辑:我的问题已经解决! […]

openjdk中的本地linux方法在哪里?

我正在尝试为linuxfind本地方法实现: private native int socketRead0(FileDescriptor fd, byte b[], int off, int len, int timeout) 我无法在Openjdk源文件中find它。 我grepped“socketRead0”的所有文件,但它只发现了Windows和solaris的实现。 它在哪里?

在Ubuntu上,Bad JetBrains Intellij IDEA和Android Studios CPU使用情况

作为一名Android开发人员,我预计Google的Android工作室会与IDEA共享一个代码库,因此我已经从Eclipse转移到了Intellij IDEA的生产代码。 到目前为止,我的经验是一个很好的经验。 我只在办公室使用IDEA,在那里我有一个运行Ubuntu 12.04 LTS(Sun JDK / JRE)的4x核心Intel i7机器,到目前为止,我从来没有注意到IDEA的性能。 然而,在我的个人电脑上将IDEA设置在家里之后,性能还是很糟糕的。 内存使用量是正常的,但是CPU使用率的持续反弹在整个应用程序生命周期的80%-100%之间。 这就是当没有别的东西在机器上运行,没有任何工作正在完成,由我或IDE的视觉。 这使IDEA在工作时无法使用,而且我可以忘记还有其他的东西在运行。 我的家庭规格和软件是: 英特尔酷睿2双核3GHz 8 GB RAM 运行SSD SATA的Ubuntu 12.04 x64 LTS(3.8.0-35-generic) Intellij IDEA 13.0-0ubuntu1 build:IC-133.193 尝试了OpenJDK和Sun 而奇怪的是,这也发生在Android工作室。 所有帮助试图debugging这种行为,将不胜感激。 #编辑1: 注意到在调出对话框(项目结构,设置等)时,CPU负载下降到20%,然后在解除对话时正确返回。 #编辑2: 我testing了从JetBrains直接得到tarball,而不是使用Canonical的ppa。 至less一个小时的性能明显更好(闲置时CPU使用率为20-30%)。 似乎C-PPA中的本地文件监视器工作不正常,并且正在索引整个文件系统。 然而性能在第一个小时左右后就变差了,回到90-100%的CPU。

JVM的系统范围的内存限制

我用8个Minecraft服务器运行一个arch linux服务器。 这台服务器有64GB的RAM。 不幸的是,我内存不足,导致Linux杀死进程。 如果我调整单个JVM的-xmx设置,我可以轻松地保持在64GB以下,同时保持良好的性能。 但这并不理想,因为不同的JVM的负载可能会有很大的变化,取决于: 一天中的时间(玩家的时区) 玩家人数 设置 情况 例如,如果我将-xmx8G设置为所有服务器,那么对于只有less数几个玩家在线的服务器来说,这样做太多了,但对于来自繁忙时区并正在生成新世界的服务器来说,这还不够。 理想情况下,我想为所有的JVM设置一个64GB的限制。 这可能吗? (不知道这是否是相关的:JVM是在不同的用户下运行的,这很方便,但并不要求它保持这种状态) 任何提示都表示赞赏!