Articles of Java的

使用正确的JRE从batch file中提取Java应用程序

我有一个非常简单的batch file,用简单的命令“ java net.sf.Saxon.transform… ”启动Java应用程序(Saxon) 这个程序需要Java版本1.5。 这个batch file将被400多个用户使用,每个用户可能或不可能在他们的机器上安装一些版本的JRE。 我以为只要安装最新版本的JRE就可以解决问题,但是没有:在某些情况下,在我们的初步testing中,虽然安装了最新版本的JRE(1.6.0_13),但命令“ java ”调用一个旧的Java版本(1.3.1 …)。 什么是从batch file中执行以下操作的最简单(但最健壮的方法): 检查哪个是最近安装的JRE 如果最新版本> = 1.5,则使用batch命令中的这个JRE 如果没有,告诉用户去下载最新的JRE 即使在机器上根本没有安装JRE的版本,这也可以工作。 我已经读了一些关于Java Webstart的内容,但是我不确定这是否是最简单的工具。 我无法确定它是否需要安装,是否可以在没有安装任何Java版本的情况下运行,等等。 还有什么其他的工具呢?

来自Hell的幻影文件夹(旧Vista安装)导致Java String.equals()问题

我正在编写一个search计算机目录的程序。 在我自己的电脑上,我安装了一个以前启动Windows Vista的驱动器。 (但是,即使“显示隐藏的文件夹”也没有出现驱动器,我可以看到运行cmd的文件夹,但这并不能解决我的问题。 我不太关心这些文件夹,但是我真的很在意用他们的名字进行string比较。 但是,当我使用File directory.getName()获取它们的名称时,string.equals()和string.compareTo()不能与这些幻像文件夹一起使用。 我已经打印出名字,检查了空格,使用修剪等,但是一个名为“Boot”的隐藏文件夹仍然与具有相同值的string不匹配。 TLDR:幻像目录返回一个不可匹配/可比较的string与文件directory.getName()。 除了解决问题,我只是想知道发生了什么。

File.listFiles()并将物理文件夹与虚拟文件夹区分开来

File.listFiles()方法列出文件夹的内容。 然而,在Windows上调用方法时,也会产生一些 – 缺less更好的短语 – “虚拟”文件夹(如“Documents and Settings”,在最近的Windows版本中被“Users”取代) 。 如果你然后为这些“虚拟”文件夹之一调用listFiles(),它总是返回null。 这就是我的问题,因为我想recursion遍历所有的文件夹。 我需要一种方法来过滤这些文件夹,最好不要通过检查他们的名字… 还有一些额外的文件夹,普通用户没有看到(如“系统卷信息”或该驱动器的回收站文件夹),我很乐意find一种方法过滤出来以及没有列入黑名单名字。 不幸的是,这些文件夹的行为就像真正的那样。 我正在寻找的就像是一个File.isSystemFolder()方法。 我非常感谢任何build议

在Windows中的Epson POS打印机的JPOSconfiguration问题

我试图在Windows中使用jPOS打印,并得到以下exception: jpos.JposException: Could not connect to service with logicalName = Printer: Exception.message=jp.co.epson.uposcommon.util.EpsonJposServiceInstanceFactory at jpos.loader.simple.SimpleServiceConnection.connect(Unknown Source) at jpos.BaseJposControl.open(Unknown Source) … 更多信息: 我正试图将我们的Java打印软件从Linux(它运行良好)移植到Windows。 我们使用Epson TM-T70收据打印机。 我安装了常规的打印机驱动程序,并立即能够使用记事本打印的东西,例如。 现在我安装了Epson JavaPoS ADK。 我使用ADK附带的SetupPOS应用程序configuration打印机。 我用逻辑设备名称“打印机”为我的打印机创build了一个新的configuration。 我保存了所有内容,并创build了jpos.xml文件。 当我尝试运行我们的应用程序,它执行printer.open(“打印机”),其中“打印机”是逻辑设备名称,打印机是一个POSPrinter实例,我得到上述例外。 我知道我正在使用生成的jpos.xml文件,因为如果我提供一个随机的逻辑设备名称,我会得到一个不同的exception。 我猜问题是在SetupPOS的端口configuration。 打印机通过USB连接。 我尝试了窗口打印机属性(ESDPRT001)中出现的端口名称,我甚至尝试COM1到COM10的所有combidation,但没有任何工作。 有没有人有一些build议? 谢谢!

如何只获取窗口的可见部分(Windows,gdi32,user32等)

我只想得到窗口中可见的部分,作为一个区域。 只想获得用户看到的区域。 当然,以编程的方式。 这是一个例子。 我有以下窗口组成: +——————————————+ | | | +=============+ | | | | | | | A +————————–+ | | | | | C | | B | | | +————————–+ | | | | +———–| |—————-+ | | +————-+ 假设我只对窗口A感兴趣,那么我需要的是一个区域的句柄,看起来像这样: +=============+ | | | A +—–+ | | | | | +—–+ | […]

在Windows上监视Java中的networking速度

有没有一个API可以监控networking活动 – 数据传输速度(下游)?

在Windows 64位平台上可以安全使用的最大Java堆大小是多less?

我们使用Windows 2003服务器64位来运行WebSphere / J2EE应用程序(JVM也是64位)。 机器有16GB物理内存。 不幸的是,我们的应用程序是内存密集型的,而且还需要一些时间来增加额外的内存。 我理解操作系统本身需要一定的内存。 这就是说,假设这是系统上运行的唯一应用程序,我们可以使用的最大堆大小是多less(没有分页?)?

将Windows Java命令转换为Linux Java命令?

我有一个BAT文件中的以下文本,所以我在Windows中的Java程序。 我想知道如何在Linux中做到这一点。 文件1: "C:\Program Files (x86)\Java\jdk1.6.0_23\bin\javac.exe" -sourcepath src -classpath bin;deps\jml-1.0b3-full.jar;deps\mail.jar -d bin src/*.java 文件2: "C:\Program Files (x86)\Java\jdk1.6.0_23\bin\java.exe" -Xmx1536m -classpath bin;deps\jml-1.0b3-full.jar;deps\mail.jar HelloWorld 我真的很感激,如果有人会将这些转换为Linux命令。 感谢:D

我希望我的服务能够运行,但作为恰好是pipe理员(Windows / UAC)的用户,

就像标题所说,我写了一个程序在后台运行,最好是作为Windows服务。 (它恰巧是用Java编写的,如果这个问题是由tanuki包装器提供的服务部分的话,而且我运行的是Vista,但是假设这种情况发生在所有带有UAC的Windows版本上)。我运行服务作为“用户X”。 我也有一个配套的GUI程序,通常从开始菜单运行(非特权 – 即“asInvoker”) – 也作为“用户X”。 后台程序(即服务)创build文件。 我的主要需求是未升级的GUI程序能够读取,写入和删除服务创build的这些文件。 只要“用户X”不是pipe理员组的成员,就可以毫无麻烦地工作。 (当然需要pipe理员login来创build服务,但没关系。) 如果我closuresUAC,或者如果我不作为服务(例如从命令提示符)运行后台程序,它也可以工作。 但是当“用户X”是pipe理员的成员,并且后台程序作为服务运行时,我无法使其工作。 这个问题的症状是,进程资源pipe理器显示我的服务进程为运行特权(我从进程属性的安全选项卡上显示“BUILTIN \ Administrators – 所有者”)。 此外,由该服务创build的所有文件都由“pipe理员”拥有。 如果我从命令提示符运行非特权的后台程序,则进程资源pipe理器显示“BUILTIN \ Administrators – Deny”,程序创build的所有文件都归“用户X”所有。

在Java套接字奇怪的stream量

我正在调查奇怪的问题。 我为IPC使用java套接字。 而且我担心奇怪的交通。 当我使用C#和通过StreamWriter传输string是好的: 但是当我使用java和ObjectOutputStream \ ObjectInputStream这是非常奇怪的: 第一列是入站stream量,第二列是出站stream量。 这是简单的代码: ObjectOutputStream oos = ObjectOutputStream(clientScoket.getOutputStream()) oos.writeObject(someCustomObject); 另一方面: ObjectInputStream ois = ObjectInputStream(clientSocket.getInputStream()); SomeCustomObject sco = oos.readObject(); 入站stream量如何不等于出站? 任何人?