Tag: java

Launch4J – 如何将依赖的jar添加到生成的exe

我有一个简单的java项目,它需要外部的jar子。 我用netbeans构build这个,在Clean和Build命令之后,我可以在dist目录中find以下结构: -myApp.jar -lib/ library1.jar library2.jar 典型的,我会说。 现在,我想分配myApp.jar与依赖库作为一个exe文件。 这可能吗? 我正在尝试使用Launch4J。 在GUI中创buildconfiguration文件,在cp部分有一些选项 <cp>lib/swing-layout-1.0.4.jar</cp> 但它似乎是类path,这是我可以参考我的额外jar子唯一的地方。 exe文件创build后,我无法findexe文件中的依赖库(EXE可以用winrar打开),从而我的应用程序崩溃。 我怎样才能正确的exe文件呢? 谢谢你的帮助。

java从networking设备读取文件

有人可以帮我find一个教程或示例的Java代码 从同一networking的任何机器读取文件

对象数组的深度副本

我想用一个构造函数来创build一个对象数组的深层拷贝。 public class PositionList { private Position[] data = new Position[0]; public PositionList(PositionList other, boolean deepCopy) { if (deepCopy){ size=other.getSize(); data=new Position[other.data.length]; for (int i=0;i<data.length;i++){ data[i]=other.data[i]; } 不过,由于某种原因,我上面有什么不起作用。 我有我运行的自动化testing,并没有通过这些testing。 所以这里有一个错误,我不知道它是什么。

其他线程中的繁忙循环延迟EDT处理

我有一个Java程序,在一个单独的(非EDT)线程上执行一个严格的循环。 尽pipe我认为Swing UI仍然可以响应,但事实并非如此。 下面的示例程序显示了这个问题:单击“尝试我”button应该会在半秒钟后或多或less地popup一个对话框,并且应该可以通过单击任何响应来立即closures该对话框。 相反,对话框需要更长的时间才能显示,并且/或者点击其中一个button需要很长时间才能closures。 问题发生在Linux(两个不同的发行版),Windows,Raspberry Pi(仅限服务器VM)和Mac OS X(由另一个SO用户报告)上。 Java版本1.8.0_65和1.8.0_72(都尝试过) i7处理器拥有多个内核。 EDT应该有足够的备用处理能力。 有没有人知道为什么EDT处理被延迟,即使只有一个繁忙的线程? (请注意,虽然Thread.sleep调用的各种build议是造成问题的原因,但它不是,它可以被删除,问题仍然可以被复制,尽pipe它显示的频率稍低,并且通常performance出上述第二种行为- 即没有响应的JOptionPane对话框,而不是延迟的对话框外观,而且,没有任何理由让睡眠调用产生到另一个线程,因为上面提到了备用的处理器内核 ; EDT可以继续在另一个内核上运行呼叫sleep )。 import java.awt.EventQueue; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; public class MFrame extends JFrame { public static void main(String[] args) { EventQueue.invokeLater(() -> { new MFrame(); }); } public MFrame() { JButton tryme = new JButton("Try me!"); tryme.addActionListener((e) […]

Java修饰语法和格式

我发现自己对访问和非访问修饰符的顺序感到困惑。 例如 abstract void go() abstract public void go() public final void go() void final go() final class Test{} class final Test{} final abstract class Test{} abstract final Test{} 我永远不知道正确的顺序是什么,有时我错了,因为有这么多可能的组合。 有一个明确的指导,哪一个应该先于另一个呢? 对代码中显示的格式和顺序是否有任何描述? 我试图拿出一个语法指南,但我不知道它是否是100%正确的。 这里是: Methods: [access modifier | nonaccess modifier] return-type method-name Classes: [access modifier | nonaccess modifier] class class-name Interfaces: [access modifier | nonaccess […]

在Java中序列化对象时的StackOverflowError

我正在使用Swing在Java中编写应用程序。 我正在尝试实现function,以保存和加载模拟状态,在我正在运行的模拟。 整个模拟保持为一个对象,与Swing断开连接。 我想用这段代码序列化我的模拟类: public void saveSimulationState(String simulationFile) { try { Serializable object = this.sm; ObjectOutputStream objstream = new ObjectOutputStream(new FileOutputStream(simulationFile)); objstream.writeObject(object); objstream.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } 但我得到以下错误(这是巨大的)。 Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError at java.io.ObjectStreamClass.processQueue(ObjectStreamClass.java:2234) at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:266) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at java.util.ArrayList.writeObject(ArrayList.java:570) […]

什么是System.out :: println的等效lambdaexpression式

我偶然发现了以下使用System.out.println的方法引用的Java代码 class SomeClass{ public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9); numbers.forEach(System.out::println); } } } System.out::println的等效lambdaexpression式是什么?

我如何从Java提升我的UAC权限?

我需要使用Preferences API的systemRootfunction,但是如果UAC处于打开状态,则由于Windows上的权限不足而失败。 我试图findpopupUAC提示的技术细节,并提升我的权限,以允许systemRoot更新成功。

org.apache.jasper.JasperException:当没有指定默认命名空间时,函数test必须和前缀一起使用

我为我的项目使用以下东西:Spring 3.0.1 + Apache Tiles 2.2.1 + Glassfish 2.1。 我想要做的是在jsp页面调用一些方法,并传递一些参数。 例如,我有一个bean: @Component @Scope(value = "singleton") public class TestBean { public void test(String param){ System.out.println("param = " + param); } } 我有一个jsp页面: <%@page contentType="text/html; charset=utf-8"%> ${testBean.test("hello")} 这段代码给了我一个例外: org.apache.jasper.JasperException:当没有指定默认命名空间时,函数test必须和前缀一起使用 如果我调用某个方法而不传递参数 – 一切正常。 我试图把jboss-el.jar放在我的WEB-INF / lib目录下,并在web.xml中放入必要的参数(如下所述),但是没有任何效果。 我受限于上面列出的一组技术,所以我不能添加任何内容,例如,不能更改我的应用程序服务器的版本。 有了这些条件,有没有解决我的问题?

应用程序closures后,让广播接收器继续运行

我需要让应用程序启动后,广播接收器始终运行。 这是在应用程序中注册该接收器的代码 IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); BroadcastReceiver mReceiver = new ScreenEventsReceiver(); registerReceiver(mReceiver, filter); 和接收器的代码 public class ScreenEventsReceiver extends BroadcastReceiver { public static boolean wasScreenOn = true; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { wasScreenOn = false; Log.d("ScreenEventReceiver", "ON"); } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { wasScreenOn = true; Log.d("ScreenEventReceiver", "ON"); } […]