从JAR或文件系统加载ImageIcon

我有一个需要显示图像的简单程序。 我知道如何从Eclipse运行代码,我知道如何从JAR文件运行它,但我想要一个适用于这两种情况的解决方案。 Eclipse项目是这样的: – Project (java) – src – controller – Main.java – ui – Display.java – images – image.jpg 在Eclipse中工作的代码片段: ImageIcon image = new ImageIcon(“images/image.jpg); 适用于JAR的一个(全部在一个JAR文件中): java.net.URL imgURL = getClass().getResource(“/images/image.jpg”); ImageIcon image = new ImageIcon(imgURL); 为了获得在两种情况下都能工作的单个代码,我需要更改什么?

布尔检查’if’条件

哪一个是更好的Java编码风格? boolean status = true; if (!status) { //do sth } else { //do sth } 要么: if (status == false) { //do sth } else { //do sth }

了解选择哪个构造函数以及原因

为什么每次打印I’m string而不是I’m object. 或者I’m int. ? public class Demo { public Demo(String s){ System.out.println(“I’m string”); } public Demo(int i){ System.out.println(“I’m int.”); } public Demo(Object o){ System.out.println(“I’m object.”); } public static void main(String[] args) { new Demo(null); } } 如果我用Integer替换int 。 它给出了错误,因为The constructor Demo(String) is ambiguous. 为什么?

为什么最终没有被召唤?

我有几个关于java中垃圾收集器的问题。 Q1。据我所知,当对象超出范围且JVM即将收集垃圾时,会调用finalize()。 我认为finalize()方法是由垃圾收集器自动调用的,但在这种情况下它似乎不起作用。 解释是什么? 为什么我需要显式调用finalize()方法? public class MultipleConstruct { int x,y; public MultipleConstruct(int x) { this.x= x; y=5; System.out.println(“ONE”); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); System.out.println(“FINALIZED”); } public static void main(String[] args) throws Throwable { MultipleConstruct construct = new MultipleConstruct(3); } } Q2。 另外,什么时候调用垃圾收集器? 我理解gc是一个守护程序线程,由JVM根据剩余的堆大小调用。 这是否意味着,JVM等待程序使用资源的阈值限制,然后通知gc扫描垃圾对象。 编辑: […]

javac优化标志

我最近在C中编写了很多代码,现在正在转向Java。 我目前正在实现一个大型数据结构,并且想知道在调用Java编译器时是否有任何优化标志,以便提高gcc中的性能。 我习惯了: gcc -O3 -NDEBUG MyProgram.c javac有一个类似的命令吗? 我正在使用JDK并运行Ubuntu 10.04。

validationJar签名

我正在尝试以编程方式validationjar文件未被明显篡改。 我有2个用例我想阻止。 1)现有类的修改2)在jar中添加新类 我用jarsigner签了jar子。 当我用jarsignervalidation上述任何一种情况时,它就像我期望的那样工作。 当我尝试以编程方式使用如何validation以编程方式使用jarsigner 签名的jar或如何validation自签名jar上的签名时的示例? 但是,我没有获得任何SecurityExceptions …或任何例外情况。 不确定我做错了什么,因为这些片段似乎对其他人有用。 有任何想法吗? 这是JDK 1.6 BTW。 编辑:根据下面的要求,代码示例…提供您自己的修改jar 🙂 JarFile myJar; try { //Insert the full path to the jar here String libPath = “” stature = new JarFile(libPath,true); //Don’t really need this right now but was using it to inspect the SHA1 hashes InputStream is = myJar.getInputStream(myJar.getEntry(“META-INF/MANIFEST.MF”)); […]

如何从javadoc Ant任务的结果中排除特定的方法/构造函数?

我正在使用javadoc Ant任务生成的javadoc来记录Web服务,我想从输出中排除一些构造函数。 我怎么做?

什么是Boilerplate代码,热门代码和热点?

我知道这些术语用于表现成就。 这一天我正在研究这个问题,并试图从互联网上了解这些,但没有得到任何能够在现实世界发展情景中清楚地呈现这些概念和存在这些问题/概念的例子。 有人可以彻底解释这些术语,示例场景,以及可能使用这些概念和术语的位置。 谢谢。

在JSplitPane上设置分隔符位置不起作用

我正在尝试设置JSplitPane的分隔符位置但似乎不起作用。 这是一个SSCCE: import java.awt.Color; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSplitPane; public class JSplitProblem extends JFrame { public JSplitProblem(){ JPanel upperPanel = new JPanel(); upperPanel.setLayout(new BoxLayout(upperPanel, BoxLayout.X_AXIS)); JPanel leftPanel = new JPanel(); leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS)); JPanel red = new JPanel(); red.setBackground(Color.red); leftPanel.add(red); JPanel rightPanel = new JPanel(); rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS)); JPanel blue = new […]

如何在.NET中实现匿名方法中的捕获值

我很好奇.NET实现及其背后的决定。 例如,在Java中,匿名类中使用的所有捕获值都必须是最终的。 这个要求似乎在.NET中被删除了。 此外,与参考类型相比,值类型的捕获值的实现是否存在差异? 谢谢