Java应用程序在IDE目录之外无法正常工作

问题描述:

当我使用NetBeans运行它时,它一切正常。当我复制dist目录内容并运行.jar时,一些东西变得越来越多。最重要的是,JTable编辑会变得混乱,只有当你点击ESC(如果你之前按下了ENTER,变更被接受,否则他们不是,但你需要在两种情况下ESC)和类似的奇怪的东西,一些领域失去焦点。我有一种感觉,我失去了一些明显的...Java应用程序在IDE目录之外无法正常工作

P.S.在保存(NetBeans功能)时,文件会自动编译。

编辑:当我刚刚进入dist dir并运行.jar时,它也可以工作。当我将NetBeans项目的目录复制出来时,问题就开始了......这是否会导致某些依赖关系被破坏?

编辑2(回复):

这个问题在我的电脑(Ubuntu的9.04),在我的Windows XP虚拟箱内部和另一个(实际)计算机与Windows XP发生。当我使用java /path/to/main.jar从控制台运行它时,它会引发mainClassNot发现的异常,并且根本不会启动。当我用java -jar /path/to/main.jar运行它时,它的工作方式有点类似,但是当涉及到上述情况时,它会抛出java.lang.NumberFormatException:null。

我使用的NumberFormat(上表更新)唯一的地方是:

DecimalFormat parser = new DecimalFormat("0.00"); 

,可能的话,这样的:

currencyFormatter = NumberFormat.getCurrencyInstance(Locale.getDefault()); 

如果默认区域设置为

Locale.setDefault(new Locale("lt", "LT")); 

Java版本是1.6.0_18,这两种JDK都是由NetBeans和JVM在上述机器中使用的。

+0

如果从控制台执行,请复制并粘贴堆栈错误。 另外,问题是在您的计算机还是在另一台计算机上发生? – 2010-02-01 22:43:51

+0

可能的路径或版本或其他错误这是在IDE上依赖TOO的问题。 – duffymo 2010-02-01 23:03:57

在NetBeans中转到您项目的属性(文件>项目属性)。转至选项卡。点击管理平台并查看平台文件夹的值。从控制台运行<platform folder>\java -version

现在再次尝试没有完整的路径;只是java -version

我期望这些返回不同的值。

IDE使用的路径来自平台定义,默认情况下,该平台定义是在安装NB并且从不更新时创建的。控制台中使用的路径来自Windows PATH环境变量。只要安装了Java,它就会更新,并且随着时间的推移,它将与IDE使用的路径不同。

当Java提示更新可用时,一个很好的经验法则是现在是在NetBeans中添加新Java平台的时候了。

我通常会围绕几个平台。至少: 1.4.2,1.5.0,1.6.0的最新版本和1.6.0的旧版本(目前u4,我们在第一个产品版本中推荐的版本)。

有意思的是JAR是以ZIP格式存储的,所以你可以试着比较一下你用Netbean的JAR编译的JAR(如果你能找到它的话),看看究竟有什么不同。

+0

它是同一个罐子。 NetBeans自动构建它,所以我只是用jar里面复制/粘贴整个dist dir,然后我开始发现bug。当我直接从项目文件夹内启动它时,它可以工作。我的猜测是有一些库没有编译但使用@ runtime,但我不知道如何检查它 – Sejanus 2010-02-01 23:54:06

+0

如果是这样的话,会引发java.lang.NoClassDefFoundError。我想也许你的环境中安装了两个JRE,而NetBeans和你的shell执行不使用同一个。 您可以参考etc/netbeans.conf(属性'netbeans_jdkhome')来查看NetBeans中使用的JRE/JDK,并将其与您的shell环境进行比较。 – 2010-02-02 00:06:41

不同的JRE版本?这是我的猜测,看你的症状。

执行此操作的方法有很多,但可以使用jconsole(jdk_dir/bin/jconsole.exe)获取这两个进程的完整详细信息(一个由NetBeans启动,一个不启动)。这将使你的JRE,装入罐等,你可以再对比...

HTH ...

你试过如此的平凡,让干净的构建,以确保所有的新变化和资源的东西被复制到远程库?