草庐IT

java - 如何分发 Java 应用程序

我想了解分发Java应用程序的各种选项。我知道你可以分发源代码让用户自己编译,或者提供make文件等。打包成JAR,并有自解压包和(我敢肯定,还有无数其他方式)我希望对最常见的选项(以及我没有想到的选项)进行一些解释,特别是,它们是否要求用户拥有JVM,或者是否可以将其与一个捆绑在一起-就我个人而言'我不太喜欢由于缺少JVM而停止的安装程序。谁说应用程序需要安装程序,独立解决方案也很好。此外,值得一问的是如何处理跨平台分发、exe与dmg等...我提出这个问题的主要动机(我很欣赏这个问题与其他问题相似)是为了找到不需要用户已经安装JVM的解决方案-但为了完整性,我一般会问。非常感谢

java - JVM 远程调试 session 因未捕获的异常而终止

我正在尝试远程调试Scala项目。执行程序(从SBT构建和执行)和我的调试器(Intellij)都是本地的,但由于我不想使用Intellij构建,使用远程调试session似乎是方便调试的最简单选择。程序以下列选项启动:-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005它在启动时成功挂起,我可以成功附加我的调试器。我可以设置断点并逐步执行代码,但问题是未捕获的异常终止了调试session并断开了调试器,从而破坏了调试的目的。这是默认行为是愚蠢的,所以我一定是做错了什么。Intellij的控制台显示:C

java - 'java' 和 'libjvm.so' (Linux) 或 'jvm.dll' (Windows) 之间的区别?

通过普通java命令启动应用程序与通过libjvm.so(Linux中的libjvm.so或Windows中的jvm.dll)直接调用JVM有什么区别?最近在论坛上看到说用dll或.so文件启动eclipse性能会更好。我想知道这是怎么发生的。谢谢。 最佳答案 如果人们想围绕Java核心包装他们自己的功能,通常他们会针对jvm.dll进行构建,有时很难做一些看起来来自Java的“本地”事情。一个很好的例子确实是Eclipse,他们想在其中弹出启动画面并在启动之前执行一些其他操作。对于其他产品,Java只是他们工作量的一小部分(例如:

java - "Error: JAVA_HOME is not defined correctly."在构建 Jikes rvm

当我在Ubuntu上构建JikesRVM时,我遇到了这个错误。有什么想法吗?bin/builditlocalhostproduction--->Config:production/bin/bash--login-c'/bin/bash--login-c"cd/home/jack/Programs/jikesrvm-3.1.2&&exportJAVA_HOME=/opt/jdk1.6.0&&antvery-clean-Dhost.name=ia32-linux&&antcheck-components-properties-Dhost.name=ia32-linux-Dtarget.na

java - 如何确定是否在 JVM 实例上设置了 -server 选项

我正在尝试确定是否在我的JVM实例上默认启用了JVM(使用jdk1.7u3)-server选项。基于我的环境(Windows2008ServerR2)和Server-ClassMachinedetectioninformation尽管我想明确知道,但我希望它会被设置。当然,我可以使用该选项显式启动JVM,而且我很可能会这样做,不过是否有一种简单的方法来确定它。我已经尝试过以下方法,但似乎都没有明确说明我在寻找什么。也许它编码在其他一些细节中。通过jVisualVM查看JVM并查看未明确列出的JVM参数以编程方式尝试查看JVM参数,与通过jVisualVM观察到的参数相匹配Runtime

Oracle 数据库嵌入式 JVM

我们如何确定Oracle数据库11g企业版11.2.0.2.0版64位(嵌入式JVM)支持哪个JRE版本任何建议将不胜感激 最佳答案 我找到了确定在Oracle数据库上使用哪个jvm版本的答案解决方法如下:如果您需要找出在您的Oracle服务器上安装了哪个java/jdk版本,您可以创建函数,然后直接从JDK检索java版本。首先创建函数...CREATEORREPLACEFUNCTIONget_java_property(propINVARCHAR2)RETURNVARCHAR2ISLANGUAGEJAVAname'java.la

java - 为什么Java不支持自动堆扩容?

为什么Java在达到操作系统强加的进程内存限制之前不会像.NETCLR那样扩展堆大小?这只是JVM开发人员制定的策略,还是.NETCLR架构优于JVM架构的优势?换句话说,如果Oracle工程师想为JVM实现自动堆扩容,他们能做到吗?谢谢编辑:我真的认为这对java来说是一个糟糕的设计选择。将Xmx设置得尽可能高(例如100GB!)是不安全的。如果用户需要在更大的数据上运行我的代码,他可能会在具有更多可用RAM的系统上运行它。作为开发人员,我为什么要设置程序的最大可用内存?我不知道数据的大小!!! 最佳答案 当JVM需要达到您设置的

java - 网络中断后由于锁定 nfs 文件导致 JVM 崩溃

以下代码片段导致JVM崩溃:如果获取锁后网络中断while(true){//filesharedovernfsStringfilename="/home/amit/mount/lock/aLock.txt";RandomAccessFilefile=newRandomAccessFile(filename,"rws");System.out.println("fileopened");FileLockfileLock=file.getChannel().tryLock();if(fileLock!=null){System.out.println("lockacquired");}el

java - 最终静态与最终非静态字段和 JVM 优化

我很好奇JVM如何处理staticfinal字段。我看到一个类似的问题here但这不是我要找的。让我们考虑这样的例子:publicclassTestClassX{publicfinalintCODE_A=132;publicfinalintCODE_B=948;publicfinalintCODE_C=288;//someothercode}publicclassTestClassY{publicstaticfinalintCODE_A=132;publicstaticfinalintCODE_B=948;publicstaticfinalintCODE_C=288;//someoth

java - Spark SQL 失败,因为 "Constant pool has grown past JVM limit of 0xFFFF"

我在EMR4.6.0+Spark1.6.1上运行这段代码:valsqlContext=SQLContext.getOrCreate(sc)valinputRDD=sqlContext.read.json(input)try{inputRDD.filter("`first_field`isnotnullOR`second_field`isnotnull").toJSON.coalesce(10).saveAsTextFile(output)logger.info("DONE!")}catch{casee:Throwable=>logger.error("ERROR"+e.getMessa