是否存在类似于Unix程序diff的Java实用程序库,但对于Objects?我正在寻找可以比较两个相同类型的对象并生成表示它们之间差异的数据结构的东西(并且可以递归地比较实例变量中的差异).我不是在寻找文本差异的Java实现.我也没有寻求有关如何使用反射来做到这一点的帮助.
我正在维护的应用程序有一个脆弱的实现这个功能,有一些糟糕的设计选择,需要重写,但如果我们可以使用现成的东西会更好.
这是我正在寻找的那种事情的一个例子:
SomeClass a = new SomeClass();
SomeClass b = new SomeClass();
a.setProp1("A");
a.setProp2("X");
b.setProp1("B");
b.setProp2("X");
DiffDataStructure diff = OffTheShelfUtility.diff(a, b); // magical recursive comparison happens here
Run Code Online (Sandbox Code Playgroud)
比较之后,实用程序会告诉我"prop1"在两个对象之间是不同的,"prop2"是相同的.我认为DiffDataStructure最自然的是树,但如果代码可靠,我不会挑剔.
我在我正在处理的应用程序中遇到了一些代码,它只是为了调用UUID字符串上的ORA_HASH函数(文档)而进行数据库调用.它这样做的原因是它需要值来对另一个似乎ORA_HASH用于分区的系统进行服务调用.
我想知道算法的ORA_HASH使用,以便我可以重新实现它,以便为一个无法访问真实数据库的应用程序进行类似的服务调用,更不用说Oracle了.到目前为止,我只能找到相当于Oracle API文档的内容.
只是要非常明确:我需要克隆,ORA_HASH因为这是我控制之外的另一个系统所使用的,我需要与该系统集成.是的,如果可以使用真正标准的算法,如MD5 ,那将是很好的,但我不能,除非这ORA_HASH是在幕后的内容.
建议使用散列算法的答案或注释ORA_HASH无济于事.这个问题具体是关于ORA_HASH,而不是一般的散列或分区.
如何在解析文档时强制SAX解析器(特别是Java中的Xerces)在输入文档中没有任何 doctype的情况下使用DTD ?这甚至可能吗?
以下是我的方案的更多细节:
我们有一堆XML文档符合由多个不同系统生成的相同DTD(我无法更改).其中一些系统会在其输出文档中添加doctype,而其他系统则不会.有些使用命名字符实体,有些则不使用.有些使用命名字符实体而不声明doctype. 我知道这不是犹太人,但这是我必须要合作的.
我正在研究需要用Java解析这些文件的系统.目前,它通过首先将XML文档作为流读取,尝试检测是否已定义doctype,并添加doctype声明(如果尚未存在)来处理上述情况.问题是这个代码是错误的,我想用更干净的东西替换它.
文件很大,所以我不能使用基于DOM的解决方案.我也在尝试解析字符实体,因此使用XML Schema 没有帮助.
如果您有解决方案,请直接发布而不是链接到它?如果将来有一个带有死链接的正确解决方案,它不会做很好的Stack Overflow.
我正在尝试使用一个对JDK敏感的Oracle软件与Websphere一起使用,我需要找到一些特定版本的IBM JDK来尝试.问题是IBM并没有像Sun/Oracle那样随时提供这些产品,而且我能够获得的所有版本都没有出于某种原因.
具体而言,我需要一个:
IBM的Java 5 SR9的视窗(理想)
的IBM Java 5 SR2为的Windows
的IBM Java 5 SR10的视窗
我怎么能直接从IBM获得这些?我的公司有一份Websphere的支持合同,如果我能告诉他们去哪里,我希望我们的Websphere工程师可以下载它.
如何使用EclipseLink和Spring配置动态编织?现在我正在尝试使用Junit测试,但我后来必须让它与Tomcat一起使用(我的部门已经标准化了10年之久).
我遇到两个主要问题:
1. Spring需要一个加载时间织布工:
例外:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:181)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
<snip>
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.weaving.AspectJWeavingEnabler#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
<snip>
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': …Run Code Online (Sandbox Code Playgroud) 虽然最近在eclipse中导入了一个新项目,但是当我尝试添加GROOVY_SUPPORT库时,它会像错误-X一样"未绑定",如下所示:

它也没有像我预期的那样出现在包浏览器中.
这究竟是什么意思?Eclipse没有报告任何其他错误.我只有红色X和未绑定的消息.
我能够通过充实的东西(特别是移除和重新添加Groovy性质)来解决这个问题,直到它消失为止,但我很好奇真正发生的事情.
我刚刚升级到Eclipse 2018.09(问题也出现在Eclipse Photon上),但是在使用JUnit 4的项目中无法很好地发挥作用。新版本似乎默认情况下使用JUnit 5运行程序运行所有测试,失败,并出现以下错误,因为我在项目的类路径上只有JUnit 4,而在JUnit 5上却没有:
java.lang.NoClassDefFoundError: org/junit/platform/engine/EngineExecutionListener
at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:59)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:370)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:365)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:309)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:224)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:208)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.EngineExecutionListener
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 12 more
Run Code Online (Sandbox Code Playgroud)
我希望能够方便地在此项目中运行测试,而无需升级到新的主要版本的JUnit,而不必采用不断重复的解决方法。我认为这将需要以某种方式更改默认的测试运行器。
我发现的解决方法以及为什么我对它们不满意:
Eclipse Photon版本信息:
Eclipse Java EE IDE for Web Developers.
Version: Photon Release (4.8.0)
Build …Run Code Online (Sandbox Code Playgroud) tl;dr: Hibernate automatically generates SQL table aliases in its queries like jurisdicti4_ or this_. Here's an example query:
SELECT
this_.id AS id2_6_3_,
this_.a_table_column AS a_table_column3_6_3_,
jurisdicti4_.b_table_column AS b_table_column4_6_3_,
FROM
app_table_a this_
LEFT OUTER JOIN jurisdiction jurisdicti4_ ON this_.jurisdiction = jurisdicti4_.name
WHERE
this_.a_table_column = ?
Run Code Online (Sandbox Code Playgroud)
I'm using the Hibernate Criteria API to add some hints that need reference the SQL aliases in the query, so I need to know how to either:
我的部门决定转向我们的一些大型Oracle数据库进行哈希分区/分片.我们将跨越不同的模式分割我们的实体.我的任务是做一个尖峰来评估不同JPA实现的适用性.
我告诉要关注的两个是EclipseLink和Apache OpenJPA/Slice.我们过去只使用过Hibernate,但是Hibernate Shards处于测试阶段,并且似乎不再积极开发(最新版本是在2007年),所以我们没有考虑它.
我将进行自己的评估和试验实施,但我不相信在我获得这些实现的时候,我会对这些实现的整体质量有一个良好的感觉.如果您在生产环境中使用OpenJPA和/或EclipseLink,特别是如果您的数据库已经共享,我希望了解您的体验(正面和负面),您对其整体质量的看法,以及您是否也这样做如果有机会再次选择.
这是一个Java问题.我尝试使用Fobs4jmf来播放3gp.我可以看到视频,但没有任何声音.有什么解决方案吗?
我尝试了一个名为xuggler的新库,但我只看到如何操作,修改视频而不是播放视频文件.是否可以使用它播放视频,声音?
这是Fobs4jmf无法播放的音频文件(纯音文件) http://gonow.no-ip.org/example.3gp
谢谢
我有程序需要解析包含字符实体的XML.程序本身不需要解决它们,它们的列表很大并且会发生变化,所以如果可以的话,我想避免明确支持这些实体.
这是一个简单的例子:
<?xml version="1.0" encoding="UTF-8"?>
<xml>Hello there &something;</xml>
Run Code Online (Sandbox Code Playgroud)
是否存在可以在不解析(非标准)字符实体的情况下成功解析文档的Java XML API?理想情况下,它会将它们转换为可以特殊处理的特殊事件或对象,但我会选择一种可以默默抑制它们的选项.
答案和示例:
Skaffman给了我答案:使用IS_REPLACING_ENTITY_REFERENCES设置为false 的StAX解析器.
这是我试图尝试的代码:
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
XMLEventReader reader = inputFactory.createXMLEventReader(
new FileInputStream("your file here"));
while (reader.hasNext()) {
XMLEvent event = reader.nextEvent();
if (event.isEntityReference()) {
EntityReference ref = (EntityReference) event;
System.out.println("Entity Reference: " + ref.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
对于上面的XML,它将打印" Entity Reference: something".
一位同事最近在我们团队的项目中引入了Spock单元测试,并且我在Eclipse集成方面遇到了一个恼人的问题:每当我们创建参数化测试并在其上使用@Unroll注释时,Eclipse JUnit视图就会失去与它的关联.测试类并在"无根测试"下显示结果.
例如,此测试类的结果:
package test
import spock.lang.Specification
import spock.lang.Unroll
class TestSpockTest extends Specification {
def "Not Unrolled Test"() {
when: "something"
then: "one equals one"
1 == 1
}
@Unroll
def "Unrolled Test #param"(Integer param) {
when: "something"
then: "a numer equals itself"
param == param
where:
param << [1, 2, 3]
}
}
Run Code Online (Sandbox Code Playgroud)
以这种方式显示:

如何将展开的测试用例(例如"展开的测试1")显示在"test.TestSockTest"下,如"未展开的测试"?我的Spock测试是否有一些Eclipse JUnit插件可以理解的命名约定?
我正在使用:
我刚开始使用链接数据/ RDF是Java开发人员.我可以创建三元组,将它们放在三重存储中,查询它们等等,但它很尴尬.我的大多数代码都专注于RDF的机制,我真的很想以一种更惯用的Java方式处理这些数据.
如何在不使用手动编码所有内容的情况下将POJO转换为使用Jena的RDF三元组?
我想在Java POJO和RDF之间来回转换一堆具有定义结构的三元组.像JAXB或ORM分别用于XML和关系数据库.
此外,我不能被锁定在一个特定的三重商店.我真的很喜欢与Apache Jena API一起使用的东西,因为它似乎最接近"行业标准".此外,项目建筑师告诉我使用它,因为三重商店他们正在调查所有支持它.
我看过的东西:
我尝试了一个类似于我想要的库,但它做了一些奇怪的选择,我不认为它对我有用.
Elmo/Alibaba 听起来也很有前景,但看起来它只适用于Sesame三重商店,听起来它可能带有一个巨大的巨型框架和/或服务器.耶拿有没有人成功使用它?我还没有尝试过.
java ×9
eclipse ×3
eclipselink ×2
groovy ×2
hibernate ×2
jpa ×2
junit ×2
oracle ×2
3gp ×1
algorithm ×1
classpath ×1
diff ×1
doctype ×1
dtd ×1
hash ×1
ide ×1
j9 ×1
jena ×1
jmf ×1
junit-runner ×1
junit4 ×1
linked-data ×1
media ×1
openjpa ×1
parsing ×1
plsql ×1
rdf ×1
sax ×1
sesame ×1
sharding ×1
spock ×1
spring ×1
sql ×1
stax ×1
tomcat ×1
unit-testing ×1
websphere ×1
xerces ×1
xml ×1