Tag: java

WEB-INF目录内的JSF文件,我如何访问它们?

我想把我的JSF 2.0 xhtml文件放在WEB-INF \ jsf下。 那么我如何访问它们呢? 我知道WEB-INF中的任何东西都不会暴露在外面,所以我需要一个控制器来将我redirect到相应的JSP,对吧? (这也是模式2的模式iirc)。 我可以用web.xml / faces-config.xml中的参数来实现吗? 我认为FacesServlet是我的web应用程序的控制器,所以它应该为此目的? 另一个问题是理解模型2模式。 每个动作都必须先到达一个servlet,然后处理下一个可能的步骤? 那么一个简单的<a href="anotherPage.html" />在这种模式下是被禁止的,因为它不会去控制servlet?

用Java读写TIFF图像

我尝试了下面的代码来完成读写tiff图像的任务: // Define the source and destination file names. String inputFile = http://img.dovov.comFarmHouse.tif String outputFile = http://img.dovov.comFarmHouse.bmp // Load the input image. RenderedOp src = JAI.create("fileload", inputFile); // Encode the file as a BMP image. FileOutputStream stream = new FileOutputStream(outputFile); JAI.create("encode", src, stream, BMP, null); // Store the image in the BMP format. JAI.create("filestore", src, […]

从Java运行外部程序,读取输出,允许中断

我想从Java启动一个进程,读取它的输出,并得到它的返回码。 但是,它正在执行,我想能够取消它。 我开始启动这个过程: ProcessBuilder pb = new ProcessBuilder(args); pb.redirectErrorStream(true); Process proc = pb.start(); 如果我打电话proc.waitFor(),我不能做任何事情,直到stream程退出。 所以我假设我需要这样的东西: while (true) { see if process has exited capture some output from the process decide if I want to cancel it, and if so, cancel it sleep for a while } 这是正确的吗? 有人可以给我一个如何在Java中做到这一点的例子吗?

Java – 通过相对path加载dll并将其隐藏在jar中

第1部分 我正在开发一个应该作为jar发布的Java应用程序。 这个程序依赖于JNI调用的C ++外部库。 要加载它们,我使用绝对path的方法System.load ,这工作正常。 但是,我真的想把它们藏在JAR里面,所以我创build了一个包来收集它们。 这迫使我加载一个相对path – 包path。 通过这种方法,我让用户在任何目录下运行JAR,而不必担心链接DLL或者厌烦以前的安装过程。 这引发了预期的exception: 线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:期望库的绝对path 我怎样才能得到这个工作? 第2部分 将DLL复制到一个文件夹(下面解释)的方法只在我在eclipse环境下运行时才起作用。 运行一个导出的JAR,DLL二进制文件被很好的创build,但是加载JNI会抛出下一个exception: 线程“main”中的exceptionjava.lang.reflect.InvocationTargetException at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56) Caused by: java.lang.UnsatisfiedLinkError: C:\Users\Supertreta\Desktop\nm files\temp\jniBin.dll: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) 我运行这个加载方法: public static void loadBinaries(){ String os = System.getProperty("os.name").toLowerCase(); if(os.indexOf("win") >= 0){ ArrayList<String> bins = new ArrayList<String>(){{ add("/nm/metadata/bin/dependence1.dll"); add("/nm/metadata/bin/dependence2.dll"); add("/nm/metadata/bin/dependence3.dll"); add("/nm/metadata/bin/dependence4.dll"); add("/nm/metadata/bin/jniBin.dll"); }}; […]

在java中使用“printf”而不是“print”是否有很好的理由?

我没有机会在学校参加任何严肃的低级程序课程。 (我知道我真的应该继续学习“幕后”,成为一名更好的程序员)。我很欣赏Java的便利,包括将任何东西粘贴到System.out.print语句中的能力。 但是,是否有任何理由要改为使用System.out.printf ? 另外,我是否应该避免在“真实应用程序”中这样打印电话? 使用某种UIfunction将消息打印到客户端显示屏可能会更好,对吗?

我怎样才能检查我的操作系统使用Java的位? (J2SE,不是os.arch)

我正在开发一个软件应用程序来检查你已经安装了哪种软件,但是为了做到这一点,我必须知道操作系统是32位还是64位的操作系统。 我试过System.getProperty(“os.arch”); 但是后来我看到这个命令只显示了JDK / JRE的位数,而不是操作系统本身。 如果你能告诉我如何知道什么样的操作系统正在被使用(Windows 7,Mac OS,Ubuntu等),那简直太棒了C:

增量运算符不会在for循环中递增

我正在做一些关于Java的研究,发现这非常混乱: for (int i = 0; i < 10; i = i++) { System.err.print("hoo… "); } 这是永无止境的循环! 有人解释为什么会发生这种事

如何用ProcessBuilder设置工作目录

我正在尝试在Ubuntu的主目录中启动一个进程。 我得到一个数组越界的exception。 这里是代码: Process p = null; ProcessBuilder pb = new ProcessBuilder(); pb.directory(new File("/home")); p = pb.start(); 这是一个例外: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) at tester.Main.main(Main.java:31) Java Result: 1

是否保证新的Integer(i)==我在Java?

考虑下面的代码片段: int i = 99999999; byte b = 99; short s = 9999; Integer ii = Integer.valueOf(9); // should be within cache System.out.println(new Integer(i) == i); // "true" System.out.println(new Integer(b) == b); // "true" System.out.println(new Integer(s) == s); // "true" System.out.println(new Integer(ii) == ii); // "false" 这很明显,为什么最后一行总是打印"false" :我们正在使用==引用标识比较,并且一个new对象将永远不会==到一个已经存在的对象。 问题是关于前3行:这些比较保证在原始int ,与Integer自动拆箱? 有没有原始的情况下将自动盒,而参考身份比较是执行? (这将是false !)

无法find或加载主类

我有Windows 7,安装了jdk1.7.0及其支持jre7。 我的问题是编译部分工作完美,但在运行Java程序时,我得到这个错误说:“无法find或加载主类”。 我将所有的程序存储在javalab文件夹中。 我已经设定了path。 过程如下所示: C:\用户\用户> CD \ C:\> cd cd javalab C:\ javalab> AUTOEXEC.BAT C:\ javalab> set path = C:\ Program Files \ Java \ jdk1.7.0 \ bin C:\ javalab> javac p1.java C:\ javalab> java p1 错误:无法find或加载主类p1 C:\ javalab>