我有简单的java项目结构:
package com.abc:
a.java
b.java
c.properties
我在c.properties文件中配置了数据库配置参数.在a.java和b.java中,我使用以下命令加载属性文件:
Properties p = new Properties();
InputStream in = this.getClass().getResourceAsStream("c.properties");
p.load(in);
Run Code Online (Sandbox Code Playgroud)
这很好用.但主要问题是,一旦我通过导出此代码准备可执行jar,属性文件也会打包在jar文件中.如果其他人想要修改不同数据库配置的属性文件,他怎么能这样做?我是否必须将属性文件存储在本地计算机的某个固定位置.例如"c:/".然后将jar以及属性文件提供给其他人.然后他需要在C:/ location中复制属性文件?还有一个问题,我如何使这个位置通用的Windows和Linux机器?
我最近开始将我的应用程序 JDK 版本从 jdk1.7.0_121_x64 升级到 jdk1.8.0_202_x64。我有一些使用 Drools 5.4.0.Final 的遗留代码。此代码适用于 JDK 版本 jdk1.7.0_121_x64,没有任何问题。
Maven 依赖项是:
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>5.4.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>5.4.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
DRL 文件加载为:
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(resource, ResourceType.DRL);
knowledgeBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
Run Code Online (Sandbox Code Playgroud)
我知道在 JDK 8 中使用 Drools 存在问题。我参考了其他SO 线程开始。
当我构建我的应用程序并使用 JDK 8 执行 Junit 测试时,测试失败并出现错误:
testRunRule(com.company.app.RuleTest) Time elapsed: 0.073 sec <<< ERROR!
java.lang.RuntimeException: java.lang.RuntimeException: wrong class format
at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:372)
at org.drools.commons.jci.compilers.EclipseJavaCompiler$2.createNameEnvironmentAnswer(EclipseJavaCompiler.java:287)
at org.drools.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:258)
Run Code Online (Sandbox Code Playgroud)
正如SO 线程中提到的,我找到了对这个错误修复票DROOLS-329 的引用。
基于此错误修复票中提到的方法,我尝试使用 …
我正在尝试解析特定目录中的文件名.文件名的格式为:
token1_token2_token3_token(N-1)_token(N).sh
Run Code Online (Sandbox Code Playgroud)
我需要使用分隔符来剪切标记'_'
,并且除了最后两个标记之外需要使用字符串.在上面的检查输出应该是token1_token2_token3
.
令牌数量不固定.我已尝试使用命令-f#-
选项cut
,但没有找到任何解决方案.有任何想法吗?
我正在尝试编写简单的RESTEasy客户端.下面给出的是示例代码:
Client client = ClientBuilder.newBuilder().build();
WebTarget target = client.target("http://localhost:8080/context/path");
Response response = target.request().post(Entity.entity(object, "application/json"));
//Read output in string format
String value = response.readEntity(String.class);
Run Code Online (Sandbox Code Playgroud)
我在线上得到例外:
Client client = ClientBuilder.newBuilder().build();
Run Code Online (Sandbox Code Playgroud)
我在控制台中看到以下错误:
16:07:57,678 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) java.lang.NoSuchMethodError: org.jboss.resteasy.spi.ResteasyProviderFactory.<init>(Lorg/jboss/resteasy/spi/ResteasyProviderFactory;)V
16:07:57,679 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) at org.jboss.resteasy.client.jaxrs.internal.ClientConfiguration.<init>(ClientConfiguration.java:44)
16:07:57,680 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:317)
16:07:57,680 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:49)
Run Code Online (Sandbox Code Playgroud)
我在pom.xml中添加了resteasy客户端依赖性:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.8.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的代码部署在JBOSS EAP 6.1上.JDK版本是1.7.
更新:我也尝试在我的pom中添加resteasy jax-rs dependancy.我还通过在web.xml中添加以下行来验证是否启用了ResteasyProviderFactory:
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
请在下面找到maven dependancies列表:
<dependencies>
<dependency>
<groupId>org.jboss.spec.javax.ejb</groupId>
<artifactId>jboss-ejb-api_3.1_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<scope>provided</scope> …
Run Code Online (Sandbox Code Playgroud) 我有一个情况,在我的where子句中我有单个谓词和表达式.两者都需要在where子句中进行AND运算:
Expression<String> col1 = tableEntity.get("col1");
Expression<String> regExpr = criteriaBuilder.literal("\\.\\d+$");
Expression<Boolean> regExprLike = criteriaBuilder.function("regexp_like", Boolean.class, col, regExpr);
Expression<TableEntity> col2= tableEntity.get("col2");
Predicate predicateNull = criteriaBuilder.isNull(col2);
createQuery.where(cb.and(predicateNull));
createQuery.where(regExprLike);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我无法执行以下操作:createQuery.where(predicateNull,regExprLike);
我尝试使用CriteriaBuilder的isTrue()方法:
Predicate predicateNull = criteriaBuilder.isNull(col2);
Predicate predicateTrue = criteriaBuilder.isTrue(regExprLike);
createQuery.where(predicateNull, predicateTrue);
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
CriteriaQuery要么在where子句中允许谓词或表达式,而不是两者都允许.任何想法如何在QueryCriteria的where子句中使用谓词和表达式?
2014年10月10日更新: 根据Chris的建议,我尝试使用:
createQuery.where(predicateNull, regExprLike);
Run Code Online (Sandbox Code Playgroud)
但我的查询失败,但有异常:
Caused by: org.jboss.arquillian.test.spi.ArquillianProxyException: org.hibernate.hql.internal.ast.QuerySyntaxException : unexpected AST node: ( near line 1, column 311 [select coalesce(substring(generatedAlias0.col1,0,(locate(regexp_substr(generatedAlias0.col1, :param0),
generatedAlias0.col1)-1)), generatedAlias0.col1), generatedAlias0.col1
from com.temp.TableEntity as generatedAlias0
where (generatedAlias0.col2 is null ) and ( regexp_like(generatedAlias0.col1, :param1))] [Proxied because : …
Run Code Online (Sandbox Code Playgroud) 我在J2EE应用程序中使用枚举时遇到问题.我在无状态服务bean中的switch case中使用enum.
在运行期间,我在switch语句中看到以下异常:
Caused by: java.lang.NoClassDefFoundError: com/comp/service/TestServiceImpl$1
Run Code Online (Sandbox Code Playgroud)
在SO上的一个主题上已经广泛讨论了这个问题.但我没有看到任何解决方案来解决此问题.
在我的情况下,我使用JBOSS EAP6.1服务器.JDK版本是1.7.代码是在Eclipse IDE中使用Maven构建的.应用程序部署为EAR存档.如何在我的EAR存档中的类路径中添加这个额外生成的类文件?有没有其他方法可以解决这个问题?
2014年6月29日更新: 我尝试从命令行构建应用程序.然后生成这个额外的类文件.而且我能够成功地执行应用程序.这似乎是日食的错误.知道怎么解决吗?
来自EAR项目的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>demo-maven</artifactId>
<groupId>com.comp.demo</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>demo-ear</artifactId>
<packaging>ear</packaging>
<name>demo - ear</name>
<url>www.comp.com</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<distribution>repo</distribution>
<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
</license>
</licenses>
<dependencies>
<!-- Depend on the ejb module and war so that we can package them -->
<dependency>
<groupId>com.comp.demo</groupId>
<artifactId>demo-web</artifactId>
<type>war</type>
</dependency>
<dependency>
<groupId>com.comp.demo</groupId>
<artifactId>demo-service</artifactId>
<type>ejb</type>
</dependency>
</dependencies>
<build>
<finalName>${project.parent.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${version.ear.plugin}</version> …
Run Code Online (Sandbox Code Playgroud) 我有一个组合框.在组合框中选择一个项目后,将打开新的JDialog.
我试着去谷歌吧.但没有找到任何答案.有人有任何想法吗?
try {
// code which throws exception.
} catch (SQLException sqlex) {
logger.error("Custom message", sqlex);
**throw new CustomApplicationException("Custom message", sqlex);**
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,在粗体线上,我收到 PMD 错误,因为“catch 块中引发了新异常,原始堆栈跟踪可能会丢失”。我知道这个问题已经被问过很多次了,也有很多在线参考资料可供参考。我已经尝试了所有可能的方法。但我仍然无法消除这个 PMD 错误。请让我知道这段代码有什么问题。提前致谢!
我有一个小项目,其中包含三个模块:
<modules>
<module>ejb</module>
<module>web</module>
<module>ear</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
我想重命名这些 Maven 模块。我尝试的第一件事是,只需重命名父级的模块名称 pom.xml 。例如
<modules>
<module>ejb-ext</module>
<module>web-ext</module>
<module>ear-ext</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
当我尝试编译该项目时,maven 抱怨子模块(例如 ejb-ext)不存在。
我使用 eclipse IDE,然后使用 eclipse 菜单refactor -> rename重命名每个模块。但由于这个原因,现在 SVN 向我显示旧模块ejb
、web
和ear
被删除,并且添加了新模块ejb-ext
、web-ext
和ear-ex
t。
有什么方法可以重命名模块而不丢失其 SVN 历史记录吗?我参考了以下线程,但没有帮助:
我正在批处理文件中的标签中执行以下命令:tasklist.exe/FI"USERNAME eq%USERDOMAIN%\%USERNAME%"/ FI"IMAGENAME eq%1"/ FI"PID eq%2"2> nul && echo errorl:%ERRORLEVEL%
%1是进程运行,%2是其PID.即使进程及其PID匹配或不匹配,我在o/p中得到"errorl:1".
我不确定这里有什么不对.任何的想法?
java ×7
maven ×4
bash ×1
batch-file ×1
combobox ×1
criteria ×1
cut ×1
drools ×1
eclipse ×1
enums ×1
exception ×1
exit ×1
expression ×1
file ×1
java-8 ×1
jboss ×1
jboss6.x ×1
jpa ×1
junit ×1
linux ×1
load ×1
location ×1
module ×1
pmd ×1
predicate ×1
properties ×1
rename ×1
resteasy ×1
rethrow ×1
status ×1
svn ×1
swing ×1
tasklist ×1
token ×1
unix ×1