输入String的NumberFormatException

我在JSF支持bean中有以下方法: public List getTopMemebers(){ return rentDAO.findByMonthAndYear(MonthReport, YearReport); } 我在数据表中显示: … 但我得到以下例外: SEVERE: Error Rendering View[/admin/index.xhtml] java.lang.NumberFormatException: For input string: “rentid” at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:449) at java.lang.Integer.parseInt(Integer.java:499) at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:375) at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:195) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72) at com.sun.el.parser.AstValue.getValue(AstValue.java:116) at com.sun.el.parser.AstValue.getValue(AstValue.java:163) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178) at javax.faces.component.UIOutput.getValue(UIOutput.java:168) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:338) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164) at […]

Java 8中的reduce累加器是否允许修改其参数?

在Java 8中,Stream有一个方法减少: T reduce(T identity, BinaryOperator accumulator); 累加器运算符是否允许修改其任一参数? 我认为不是因为JavaDoc说累加器应该是NonInterfering,尽管所有的例子都谈到修改集合,而不是修改集合的元素。 所以,举一个具体的例子,如果有的话 integers.reduce(0, Integer::sum); 并假设Integer是可变的,并允许sum通过向其添加(就地)第二个参数的值来修改其第一个参数? 我认为不是,但我也想要一个这个干扰导致问题的例子。

使用Java regexp匹配(例如)Unicode字母

StackOverflow上有许多问题和答案,假设“字母”可以在[a-zA-Z]的正则表达式中匹配。 然而,对于Unicode,还有更多的字符,大多数人会认为是一个字母(所有的希腊字母,Cyrllic ..还有更多.Unicode定义了许多块,每个块可能有“字母”。 Java定义为像alpha字符这样的东西定义了Posix类 ,但是它被指定为仅使用US-ASCII。 预定义的字符类定义由[a-zA-Z_0-9]组成的单词,它也排除了许多字母。 那么如何正确匹配Unicode字符串呢? 有没有其他图书馆能够做到这一点?

Hibernate不会自动创建表

我有Hibernate和Spring框架的Maven项目。 我希望Hibernate自动创建表,但是只删除所有现有表并且不创建所需的表。 在会话工厂初始化期间不会抛出exception,但是当我尝试保存Player实体时,抛出exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表’billboarddb.player’不存在 如果我手动创建表并将属性hibernate.hbm2ddl.auto更改为”validate” ,那么一切正常。 你有什么想法,为什么Hibernate不创建表? Spring配置文件: /WEB-INF/config/jdbc.properties ${hibernate.dialect} ${hibernate.show_sql} ${hibernate.hbm2ddl.auto} ${hibernate.c3p0.min_size} ${hibernate.c3p0.max_size} ${hibernate.c3p0.timeout} ${hibernate.c3p0.max_statements} jdbc.properties文件: hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/BillboardDB hibernate.connection.username=root hibernate.connection.password=1234 hibernate.default_schema=BillboardDB hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.hbm2ddl.auto=create hibernate.show_sql=true hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.timeout=1800 hibernate.c3p0.max_statements=50 Hibernate依赖项: org.hibernate hibernate-entitymanager ${hibernateVersion} org.hibernate hibernate-c3p0 ${hibernateVersion} org.hibernate hibernate-tools ${hibernateToolsVersion}

即使坏人试图抓住它,如何在任何OutOfMemoryException上退出JVM

OOME是一类错误,通常你不应该从中恢复。 但是如果它被隐藏在一个线程中,或者有人捕获它,那么应用程序可能会进入一个它不会退出的状态,但是没有用处。 有关如何防止这种情况的任何建议,即使面对使用可能愚蠢地尝试捕获Throwable或Error / OOME的库? (即您没有直接访问权限来修改源代码)

替换Unicode控制字符

我需要在Java中替换字符串中的所有特殊控制字符。 我想问谷歌地图API v3,谷歌似乎并不喜欢这些字符。 示例: http : //www.google.com/maps/api/geocode/json?sendor = false&address = NEWS%20YO​​RK%C2%8F 此URL包含以下字符: http : //www.fileformat.info/info/unicode/char/008f/index.htm 所以我收到了一些数据,我需要对这些数据进行地理编码。 我知道有些角色不会通过地理编码,但我不知道确切的列表。 我无法找到有关此问题的任何文档,因此我认为Google不喜欢的字符列表就是这个: http : //www.fileformat.info/info/unicode/category/Cc/list.htm 是否有任何已构建的函数来摆脱这些字符,或者我必须构建一个新的,逐个替换? 还是有一个很好的正则表达式完成工作? 有人知道谷歌不喜欢哪个角色列表? 编辑:Google为此创建了一个网页: https://developers.google.com/maps/documentation/webservices/?hl=fr#BuildingURLs

如何正确关闭资源

当我清理一些代码时,FindBugs向我指出了一些使用Connection,CallableStatement和ResultSet对象的JDBC代码。 这是该代码的一个片段: CallableStatement cStmt = getConnection().prepareCall(“…”); … ResultSet rs = cStmt.executeQuery(); while ( rs.next() ) { … } cStmt.close(); rs.close(); con.close(); FindBugs指出这些应该在finally块内。 我开始重构我的代码来做这个,我开始想知道如何处理finally块中的代码。 创建CallableStatement的Connection对象可能会抛出exception,将ResultSet对象保留为null。 当我尝试关闭ResultSet时,我会得到一个NullPointerException,而我的Connection将永远不会被关闭。 实际上, 这个线程提出了相同的概念,并表明将close()调用包装在null检查中是个好主意。 但是其他可能的例外呢? 根据Java API规范,如果发生数据库错误,Statement.close()可以抛出SQLException。 因此,即使我的CallableStatement不为null并且我可以成功调用它上的close(),我仍然可能会得到一个exception并且没有机会关闭我的其他资源。 我能想到的唯一“故障安全”解决方案是将每个close()调用包装在自己的try / catch块中,如下所示: finally { try { cStmt.close(); } catch (Exception e) { /* Intentionally Swallow Exception */ } try { rs.close(); } catch […]

从Java访问Visual FoxPro数据库

我一直试图从Java访问Visual Fox Pro数据库一周。 我变得绝望,因为我的项目预算和时间框架非常紧密。 (正如任何其他项目,我猜,哈哈哈) 我有.dbf , .cdx和.fpt文件。 我需要能够查找记录,提取数据和更新数据。 我没有VFP许可证。 我希望有人可以使用一些指针或工作示例。 如果唯一的方法是购买一个司机我会愿意根据收到的建议考虑它。 这是我尝试过的简短描述。 我发现这个xBaseJ:java对象可以读取和写入dBase文件 。 但它并没有支持CDX索引文件。 还发现此示例访问dbf 。 但是我的测试显示了这个exception: java.sql.SQLException: [Microsoft][Controlador ODBC dBase] La tabla externa no tiene el formato esperado. 我想这个错误的英文翻译可能是这样的: java.sql.SQLException: [Microsoft][ODBC dBase Driver] External table is not in the expected format 由于这个错误,我认为我需要一个更新的驱动程序。 在这个微软页面中说他们不再拥有ODBC驱动程序,并且每个人都应该使用OLE DB Provider。 问题是我还没有找到一种从java中使用它的方法。 据我所知, 没有办法直接做到。 在这里发现有人在谈论JACOB“thingy”,有人评论需要创建一个C ++或C#“某事”才能做我需要的东西。 我想他正在谈论JACOB项目:一个JAva-COM桥 。 […]

在Java中将本地时间戳转换为UTC时间戳

我有一个毫秒 – 自 – 本地 – 纪元时间戳,我想将其转换为毫秒自UTC时间戳。 从快速浏览文档看起来像这样的东西会起作用: int offset = TimeZone.getDefault().getRawOffset(); long newTime = oldTime – offset; 有一个更好的方法吗?

好hashCode()实现

在hashCode方法的Best实现中接受的答案给出了一种看似很好的方法来查找哈希码。 但我是Hash Codes的新手,所以我不知道该怎么做。 对于1),我选择的非零值是否重要? 1和其他数字一样好,例如素数31 ? 对于2),我是否将每个值添加到c? 如果我有两个long , int , double等字段怎么办? 我是否在本课程中正确理解了它: public MyClass{ long a, b, c; // these are the only fields //some code and methods public int hashCode(){ return 37 * (37 * ((int) (a ^ (a >>> 32))) + (int) (b ^ (b >>> 32))) + (int) (c ^ (c […]