动态类重新加载仅在调试模式下工作,为什么/如何真正起作用?

我有一个棘手的问题。 我的java程序正在循环这样的事情: 环: 将已编译的java类的外部文件读入byte []数组。 创建我自己的类加载器的新实例。 从readed文件到classloader的这个实例的setbytes。 使用创建的类加载器从外部文件创建类的对象的新实例。 调用所创建对象的任何方法。 问题出在哪里。 当我在调试模式下运行此程序时,它的行为与我期望的一样,因此如果外部文件更改了类加载器,则加载新版本的类并执行新版本(如果文件未更改,则当然也加载旧版本)。 但是当我运行这个程序时,不是在调试模式下,它总是执行旧版本,尽管readed文件已经改变。 也许对类加载问题和JVM行为有更深入了解的人可以向我解释这种行为。

从jsr-303自定义validation器访问数据库

我在我的应用程序上下文中使用基于弹簧的validation与hibernatevalidation器结合使用以下内容: …. 我已经实现了一个访问数据库的自定义validation器,以使用弹簧注入的DAO检查特定对象的有效性约束。 这会导致java.lang.StackOverflowError,因为每次从validation器中从数据库加载对象时都会调用validation,从而导致无限循环。 为了解决这个问题,我尝试在我的实体管理器上设置刷新模式,使用以下代码在validation器中提交: entityManager.setFlushMode(FlushModeType.COMMIT); 这导致hibernate的“集合不通过flush()处理”exception。 是否有一个从自定义validation器访问数据库的最佳实践示例,这将允许我解决这两个问题?

使用jdbc / hibernate获取当前数据库事务ID?

我已经浏览了Google,但找不到任何相关内容。 基本上,我希望掌握长期运行的交易。 现在,我将浏览information_schema.INNODB_TRX或查看show engine innodb status的输出以查找trx_id ,然后打开general_logs以查看所有查询的运行情况。 有没有办法,我可以使用jdbc或hibernate在我的代码中获取此transaction_id ,以便我可以在我的服务器日志中记录它?

从命令提示符运行JAR文件时为什么会出现exception?

嗨我已经在eclipse上使用导出选项制作了一个可运行的JAR文件。 但是,当我通过命令提示符运行该文件时,我得到以下内容 Exception in thread “main” java.lang.NoSuchMethodError at org.eclipse.jdt.internal.jarinjarloader.RsrcURLConnection.getInputStream(RsrcURLConnection.java:43) at java.net.URL.openStream(Unknown Source) at sun.misc.URLClassPath$Loader.getResource(Unknown Source) at sun.misc.URLClassPath.getResource(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56) 有没有人对我做错什么有任何想法? 对整个创建可运行文件等都很陌生。

java中( – i + ++ i)中表达式的输出

int i=9; System.out.println(–i + ++i); 执行时输出:17 i的最终值是:9 但根据java中的关联性和优先级规则,我应该首先执行,即从右到左执行10然后–i给出9 ..添加两者,答案应该是19 …至于我知道这样的代码在C / C ++中给出了未定义的行为,但在java中,规则是严格定义的,并且没有序列点的概念。 所以,任何人都可以澄清问题,因为我真的很困惑这个? 在一些书中也提到了后增量和后减量运算符是LTR关联的。 但是在其他一些书中,它给出了所有增量和减量(post和pre)都是RTL关联的。!! 任何人都可以为java提供正确的运算符优先级和关联表吗?

ANTLR API问题; 示例+解决方法提供; 需要解释

我使用ANTLRWorks创建了以下Lexer。 (另见http://bkiers.blogspot.com/2011/03/2-introduction-to-antlr.html#intro ) // CSVLexer.g lexer grammar CSVLexer; @lexer::header { package graphica.parsers; } Comma : ‘,’ ; LineBreak : ‘\r’? ‘\n’ | ‘\r’ ; SimpleValue : ~(‘,’ | ‘\r’ | ‘\n’ | ‘”‘)+ ; QuotedValue : ‘”‘ (‘””‘ | ~'”‘)* ‘”‘ ; 我使用以下Java类来测试Lexer。 /** * * @author Nilo */ import org.antlr.runtime.*; public class CSVLexerTest { […]

如何在TimePicker中设置自定义时间

TimePicker在TimePicker中将当前时间显示为默认值,但是如果我想根据我的要求设置默认的时间选择器时间。 就像我写这篇文章时的11:10一样,但是在TimePicker中我喜欢默认显示01:00(我的意思是2小时差异,而分钟只应该是00) static final int TIME_DIALOG_ID = 1; public int year,month,day,hour,minute; private int mYear, mMonth, mDay,mHour,mMinute; public TimePickerActivity() { // Assign current Date and Time Values to Variables final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); mHour = c.get(Calendar.HOUR_OF_DAY); mMinute = c.get(Calendar.MINUTE); } private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() […]

java SimpleDateFormat模式与参数不同

SimpleDateFormat模式是“yyyyMM”,arg是yyyy-MM,但没有exception和错误的结果。 为什么? THX ~~ SimpleDateFormat format = new SimpleDateFormat(“yyyyMM”); System.out.println(format.format(format.parse(“2011-07”))); 结果是201105

Google App Engine投影查询返回0结果

我正在尝试执行投影查询,以便从我的数万个实体中的每个实体中获取多个属性。 我已阅读并遵循文档 ,但我的查询未返回任何结果。 我甚至将我的投影简化为仅投影单个属性,实体的ID字段,但仍然得到0结果。 这是我的简化代码: Query q = new Query(“MyEntity”); q.addProjection(new PropertyProjection(“entityId”, Long.class)); DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); PreparedQuery pq = datastore.prepare(q); int count = pq.countEntities(FetchOptions.Builder.withLimit(1000)); log.info(“query contains ” + count + ” items.”); 当我运行此代码时, count等于0.如果我只删除第二行以使查询没有投影,则count等于1000。 我在我的应用程序中使用Objectify ,但我使用GAE低级API进行投影查询,因为我使用的是Objectify v3,它不支持投影查询。 改变我的代码以支持Objectify v4会有很多工作。 我正在投影的entityId字段在我的Objectify实体对象中看起来像这样: @Id Long entityId;

如何在动作书中的mahout中运行示例

我试图在第7章中运行hello world示例。我在eclipse中创建了以下内容,然后将其打包到jar中: – package com.mycode.mahout import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import org.apache.mahout.clustering.WeightedVectorWritable; import org.apache.mahout.clustering.kmeans.Cluster; import org.apache.mahout.clustering.kmeans.KMeansDriver; import org.apache.mahout.common.distance.EuclideanDistanceMeasure; import org.apache.mahout.math.RandomAccessSparseVector; import org.apache.mahout.math.Vector; import org.apache.mahout.math.VectorWritable; public class SimpleKMeansClustering { public static final double[][] points = { {1, 1}, {2, […]