如何在JBoss 7.1中使用log4j?
我的WebContent/WEB-INF/lib文件夹中有一个log4j-1.2.16.jar.当我输出Logger.getRootLogger().getClass().toString()我得到的结果class org.jboss.logmanager.log4j.BridgeLogger是错误的.
如果我添加Dependencies: org.apache.commons.logging到我的MANIFEST.MF文件,我得到相同的结果.
这导致我的log4j.properties文件(我创建了unter WEB-INF/classes)被忽略的问题.
在导出到Excel时,我发现了以下问题.
如果您创建一个表格,其中一个单元格有换行符并将文档保存为txt文件,它将如下所示:
"firstLine<LF>secondLine"<TAB>"secondColoumn"
Run Code Online (Sandbox Code Playgroud)
当我在Excel中打开此文件时,换行符消失,第一行只有一个单元格,其值为firstLine
你知道是否有可能保持换行符?
编辑:适用于Excel2010.不知道其他版本是否表现不同.
EDIT2:重现的步骤:
excel文件现在有2行是错误的.
可以在Eclipse中禁用"JSP索引管理器"吗?我问,因为导致"处理构建路径更改"的某些操作会启动完整的重新索引.由于JSP需要大量的JSP(约30分钟).
@Mocked Provider provider;
public static class Provider {
public static List<Integer> getStaticList() {
return new ArrayList<>();
}
public static List<Integer> test() {
return getStaticList();
}
}
@Test
public void testStatic() {
ArrayList<Object> list = new ArrayList<>();
list.add(1);
new Expectations() {
{
Provider.getStaticList();
result = list;
}
};
assertThat(Provider.test(), JUnitMatchers.hasItem(1));
}
Run Code Online (Sandbox Code Playgroud)
我想模拟(使用JMockit)一个在另一个中调用的静态方法.我怎样才能做到这一点?上述测试失败.永远不会调用真正的Provider.test方法.
我在执行命令行工具时遇到了一些问题.我想从WinRAR执行UnRAR.exe.我是这样做的:
Process process = runtime.exec("\"" + unrarPath + "\"" + " x -kb -vp " + "\"" + fileName + "\"", null, f.getParentFile());
Run Code Online (Sandbox Code Playgroud)
我的问题是压缩文件受密码保护.如果我在控制台中执行命令,则会要求输入密码.如果我让Java执行它,程序就会结束,永远不会等待用户输入(密码).
我试着写入流程输出流,但这不起作用.在"不同"环境中执行的命令行程序的行为是否需要了解?
编辑:也许我不够清楚.我的问题是:是否可以使用Java与命令行程序进行交互?
由于某种原因,无论指定什么算法,我总是在调用SecretKeyFactory.getInstance()时在单元测试中获得异常.例如:
SecretKeyFactory.getInstance("PBEWITHMD5ANDDES")
com.mhe.connect.util.EncryptionException: java.security.NoSuchAlgorithmException: PBEWITHMD5ANDDES SecretKeyFactory not available
Run Code Online (Sandbox Code Playgroud)
同时,我看到Security.getProviders()返回我需要的算法:
SECRETKEYFACTORY.DESEDE SunJCE
SECRETKEYFACTORY.PBEWITHMD5ANDDES SunJCE
SECRETKEYFACTORY.DES SunJCE
SECRETKEYFACTORY.PBEWITHMD5ANDTRIPLEDES SunJCE
SECRETKEYFACTORY.PBKDF2WITHHMACSHA1 SunJCE
SECRETKEYFACTORY.PBEWITHSHA1ANDDESEDE SunJCE
SECRETKEYFACTORY.PBEWITHSHA1ANDRC2_40 SunJCE
Run Code Online (Sandbox Code Playgroud)
这仅在单元测试(来自Maven或IDE)中发生,并且如果代码在Jetty下运行(从相同的Maven/JDK运行),则可以正常工作.
这种行为可能是什么原因?
我正在使用新的JBoss 7.1,它实现了完整的Java EE 6标准和Eclipse Indigo.
是否可以在Eclipse中使用EE Api的所有Javadoc?
我正在使用JBoss 4和Java 6u29.我使用wsimport为soap webservice生成了一些类.除了一件事,一切都很好.
每当webservice响应soap故障时,我都会遇到以下异常:
java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.internal.ws.fault.SOAPFaultBuilder
Run Code Online (Sandbox Code Playgroud)
该课程包含在JRE中.我不知道为什么找不到这个课程.我在谷歌搜索但没有成功.你知道什么可能导致这个错误吗?
如果该实体未映射,是否可以创建一个对另一个实体执行外连接的条件查询?
我知道当您进行交叉连接并手动添加连接条件时,可以进行内部连接。它看起来像这样:
CriteriaBuilder cb = getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createTupleQuery();
Root<Car> car = cq.from(Car.class);
Root<Color> color = cq.from(Ccolor.class);
cq.where(cb.equal(car.get("colorUuid"), color.get("uuid")));
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,我需要外部联接的行为。
假设我有这些实体:
CriteriaBuilder cb = getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createTupleQuery();
Root<Car> car = cq.from(Car.class);
Root<Color> color = cq.from(Ccolor.class);
cq.where(cb.equal(car.get("colorUuid"), color.get("uuid")));
Run Code Online (Sandbox Code Playgroud)
可以说颜色是可选的,这就是我需要外部连接的原因。SQL 看起来像
class Car {
@Column(name="color_uuid")
private String colorUuid;
}
class Color {
private String uuid;
private String name;
}
Run Code Online (Sandbox Code Playgroud)
我可以用 Criteria 来做到这一点吗?
我有一个共同的问题,我想听听你对最佳方法的看法.
假设您有一个在分布式服务器系统上运行的应用程序.让我们说前端和后端服务器.后端服务器上的方法通过RMI调用.
后端java进程通常需要不同于前端java进程的库.后端可能会发生运行时异常.抛出的异常不会被后端捕获,因此它会传输到前端服务器.现在的问题是前端不知道异常,因为包不在类路径中(例如EJBTransactionRolledBackException).抛出另一个异常 - ClassNotFoundException.这使得无法查看execption发生的位置,因为stacktrace不包含来自后端服务器的堆栈.我能想到的另一种情况是异常无法序列化.
你怎么解决这个问题?我可以以某种方式记录抛出的任何运行时异常,而无需构建try ... catch和rethrow块吗?