为什么我不能将JPanel添加到JFrame?

这是代码: import javax.swing.SwingUtilities; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import java.awt.event.*; import java.awt.*; public class GameWindow { private String[] players; private JFrame frame; // Constructor. public GameWindow(String[] players) { this.players = players; } // Start the window in the EDT. public void start() { SwingUtilities.invokeLater(new Runnable() { public void run() { showWindow(); controller.start(); } }); […]

用Java处理数百万个数据库记录

我需要编写一个批处理作业,该作业从数据库表中提取行并基于某些条件,写入其他表或使用特定值更新此行。 我们使用spring和jdbc来获取结果集,并使用计划每周运行的独立java程序迭代并处理记录。 我知道这不是正确的方法,但我们必须将其作为临时解决方案。 随着记录增长到数百万,我们最终会出现内存exception,所以我知道这不是最好的方法。 你们中的任何人都可以推荐一种处理这种情况的最佳方法吗? 使用线程并为每个线程获取1000条记录并并行处理它们? (要么) 使用任何其他批处理机制来执行此操作(我知道有弹簧批但从未使用过此) (要么) 还有其他想法吗?

获取应用程序服务器下的真实(虚拟)主机名

我有一个在Jetty下运行的应用程序,我希望应用程序返回自引用绝对URL(生成RSS源时,因此客户端必须能够在没有“当前URL”上下文的情况下工作)。 问题是我不知道应该在哪个主机名下部署应用程序,并且它很可能会部署在虚拟主机环境中,其中多个主机名映射到同一个IP地址。 我尝试过使用HttpServletRequest.getLocalName() ,但是返回已接收请求的IP地址的解析主机名[1](通常是本地主机文件中设置的内容),而不是URL中的主机名。 HTTP请求中指定的客户端。 基本上我想得到CGI下的环境变量SERVER_NAME但它看起来不像Java API提供的那样。 任何帮助将不胜感激。 [1]只有我很幸运 – 在某些设置上它只返回IP地址。

可以/我应该编辑R.java文件。 如果是这样,怎么样?

所以我在Eclipse for Android 4.0中编写了一个简单的计算器,我正在尝试对我的代码进行流线化,并使其尽可能简单。 我正在尝试清理的地方是我的findViewById()。 因为我有按钮0-9来实例化我有一个十行长的代码块,如下所示: b0 = (Button) findViewById(R.id.b0); b1 = (Button) findViewById(R.id.b1); … b9 = (Button) findViewById(R.id.b9); 正如你所看到的,这件事只是在寻求一个for循环。 所以我想做的是制作两个数组。 Activity中的一个实例变量数组,它包含数字键盘的所有Button实例变量: private Button[] numberPad = {b0,b1,b2,b3,b4,b5,b6,b7,b8,b9}; 然后是R.java文件中id类中的另一个数组,它包含所有按钮id变量,如下所示: private static final int[] numberPad = {b0,b1,b2,b3,b4,b5,b6,b7,b8,b9}; 因此,我可以使用此循环将十行Button实例减少为两行: for(int i = 0; i < numberPad.length; i++) numberPad[i] = (Button) findViewById(R.id.numberPad[i]); 当我输入它时它很好,但是当我去保存它时它会自动恢复到它的原始forms。 我没有看到这个代码有什么问题。 据我所知,它不会产生任何错误。 为什么我不能以这种方式编辑R.java文件? 有办法吗? 我是不是该?

Java:如何将一个hashmap插入MongoDB?

我有一个hashmap,我试图插入到MongoDB(版本3.6)。 我知道insertMany()方法 – 它只接受文档列表。 我无法创建列表,因为我的数据中有重复项,我想摆脱它们。 这就是我创建hashmap的原因。 有什么方法可以将hashmap插入Mongodb吗? 我找到了一个链接https://www.mkyong.com/mongodb/java-mongodb-insert-a-document/ ,其中显示了如何将地图插入Mongodb collection.insert(new BasicDBObject(documentMap)); 但是在新的mongoDB中不推荐使用BasicDBObject。 我的hashmap看起来像这样: -1322771423 [ecn, KeywordMatch, http://insidedell.com/ecn, ECN] -2144339676 [product marketing, PhraseMatch, http://dellemc.com/product, Products] -214203024 [jive, ExactMatch, http://test.com/jive, Jive test] -493382214 [search, ExactMatch, http://example.com, Search Consultancy] 基本上我希望我的MongoDB集合看起来像这样: new_collection { _id: -493382214 query: ExactMatch, link: http://example.com, content: Search Consultancy } { _id: … } 编辑: 我的问题的背景 […]

Java:将命名和未命名参数的组合传递给可执行的Jar / Main方法

我正在寻找一种方法,以便我们可以将命名和未命名的参数传递给main方法。 目前我传递的内容如下 java -jar myJar param1 param2 param3 并将它们作为 public static void main( String[] args ) throws IOException { String param1 = args[0]; String param2=args[1]; ….. 我必须能够发送它们并在Java中处理它们,以便我可以根据它们的名称读取值,并且每次执行Main方法时都不需要以相同的顺序传递参数。 我可以使用一些外部库来使我的工作更轻松。 我想发送我的参数如下,并在java main中处理它 java -jar myJar param3name=param3 param2name=param2 param1name=param1 param5 param6 我想把它们当作下面的东西处理 public static void main( String[] args ) throws IOException { //something like String param3 = getvaluemethod(“param3name”); […]

Javacv + Yosemite + Eclipse:项目未运行,java.lang.UnsatisfiedLinkError

好吧,这个问题已经多次面对,但在这种情况下我无法解决。 几天前我把我的mac升级到Yosemite。 在此之前,该项目开始没有问题! (我的意思是,对于Mavericks OS)Mac是去年的13.3英寸Pro Retina。 我正在用Java实现一个face识别器,所以我需要OpenCV的API和Javacv的包装器(我使用的是0.9版本)。 按照Javacv / Javacpp开发人员的指示,我只是链接到我的eclipse / java项目:javacv.jar,javacpp.jar和opencv-macosx-x86_64.jar。 Eclipse告诉我一切都很好,但当我试图让它运行时,我得到: Init, please wait… Creating detector… Exception in thread “main” java.lang.UnsatisfiedLinkError: /Users/*/Desktop/javacv-bin/opencv-macosx-x86_64/org/bytedeco/javacpp/macosx-x86_64/libjniopencv_core.dylib: dlopen(/Users/*/Desktop/javacv-bin/opencv-macosx-x86_64/org/bytedeco/javacpp/macosx-x86_64/libjniopencv_core.dylib, 1): Library not loaded: @rpath/libopencv_core.2.4.dylib Referenced from: /Users/*/Desktop/javacv-bin/opencv-macosx-x86_64/org/bytedeco/javacpp/macosx-x86_64/libjniopencv_core.dylib Reason: no suitable image found. Did find: /Users/*/Desktop/javacv-bin/opencv-macosx-x86_64/org/bytedeco/javacpp/macosx-x86_64/./libopencv_core.2.4.dylib: malformed mach-o image: load command #12 length (0) too small in /Users/*/Desktop/javacv-bin/opencv-macosx-x86_64/org/bytedeco/javacpp/macosx-x86_64/./libopencv_core.2.4.dylib at java.lang.ClassLoader$NativeLibrary.load(Native […]

JAX-RS:不区分大小写的路径

我已经通过@Path注释将REST服务/方法锚定到URI模板。 看起来像往常一样: @GET @Path(“/message”) @Produces(“application/json”) public Response getMessage() { … } 但我的REST服务必须不区分大小写。 现在我在我的所有代码中使用@Path中的正则表达式: @GET @Path(“/{message:[mM][eE][sS][aA][gG][eE]}”) @Produces(“application/json”) public Response getMessage() { … } 这看起来很奇怪。 有没有我在规范中忽略的东西(我希望不是,看到这个 )或者有任何JAX-RS实现的特殊function吗? 现在我正在使用JBoss RESTeasy 。 谢谢。

确定Neo4j数据库版本

当我打电话时,Neo4j Java API会自动将过时的数据库更新为当前版本 new GraphDatabaseFactory().newEmbeddedDatabase(File storeDir) 我想在执行此操作之前检查数据库的版本。 有没有办法用Java API做到这一点? 或者:存储数据库版本在哪里,以便我可以手动读出它?

Java:将JSON结构反序列化为Map

我有一个JSON字符串,我想转换为Map结构,其中Object是基本类型的Java版本(即String,Int,Double),Map。 或者一份清单。 我用于测试的示例字符串是: “{\”cases\”:[{\”documents\”:[{\”files\”:[{\”name\”:\”a.pdf\”}]}]}]}” 这应该是一个案例数组,每个案例都有一个文档数组,每个文档都有一个文件数组,每个文件都有一个名称 我试过Google的Gson,但是 Gson gson = new Gson(); List<Map> results = gson.fromJson(dictString, List.class); 给我: com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@561777b1 failed to deserialize json object {“cases”:[{“documents”:[{“files”:[{“name”:”a.pdf”}]}]}]} given the type interface java.util.List 我试过jackson,但是 List<Map> results = (List<Map>) new ObjectMapper().readValue(dictString, List.class); 给我: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.List out of START_OBJECT token at [Source: java.io.StringReader@1c5aebd9; […]