小编use*_*114的帖子

对java属性文件位置感到困惑

我有简单的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机器?

java location load properties

25
推荐指数
1
解决办法
4万
查看次数

Junit 测试不适用于 Drools 5.4.0.Final 和 JDK 8

我最近开始将我的应用程序 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 的引用。


基于此错误修复票中提到的方法,我尝试使用 …

java junit drools maven java-8

24
推荐指数
1
解决办法
536
查看次数

除最后两个令牌外,Unix裁减

我正在尝试解析特定目录中的文件名.文件名的格式为:

token1_token2_token3_token(N-1)_token(N).sh
Run Code Online (Sandbox Code Playgroud)

我需要使用分隔符来剪切标记'_',并且除了最后两个标记之外需要使用字符串.在上面的检查输出应该是token1_token2_token3.

令牌数量不固定.我已尝试使用命令-f#-选项cut,但没有找到任何解决方案.有任何想法吗?

unix linux bash cut token

19
推荐指数
3
解决办法
1万
查看次数

RESTEasy Client + NoSuchMethodError

我正在尝试编写简单的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)

java nosuchmethoderror resteasy maven jboss6.x

15
推荐指数
2
解决办法
3万
查看次数

JPA:谓词和表达式都在QueryCriteria where子句中

我有一个情况,在我的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)

java expression jpa criteria predicate

13
推荐指数
1
解决办法
5981
查看次数

Java:枚举:NoClassDefFoundError

我在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)

java enums jboss noclassdeffounderror maven

8
推荐指数
1
解决办法
3225
查看次数

Swing组件和jdk版本问题

我有一个组合框.在组合框中选择一个项目后,将打开新的JDialog.

  1. 当我使用JDK 1.6_06时,我可以正确地点击JDialog中的按钮.
  2. 当我使用JDK 1.6_24时,我需要先点击JDialog中的任何位置.然后只需单击按钮即可.首先,我认为这是焦点的一些问题.但组件适用于JDK 1.6_06.但它仅与JDK 1.6_24有关.

我试着去谷歌吧.但没有找到任何答案.有人有任何想法吗?

java swing combobox

7
推荐指数
1
解决办法
541
查看次数

Java 错误:catch 块中抛出新异常,原始堆栈跟踪可能会丢失

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 错误。请让我知道这段代码有什么问题。提前致谢!

java exception pmd rethrow

7
推荐指数
1
解决办法
2万
查看次数

如何重命名maven模块?

我有一个小项目,其中包含三个模块:

<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 向我显示旧模块ejbwebear被删除,并且添加了新模块ejb-extweb-extear-ext。

有什么方法可以重命名模块而不丢失其 SVN 历史记录吗?我参考了以下线程,但没有帮助:

参考文献 1 参考文献 2

eclipse svn module rename maven

5
推荐指数
2
解决办法
9912
查看次数

批处理文件中的任务列表退出状态?

我正在批处理文件中的标签中执行以下命令: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".

我不确定这里有什么不对.任何的想法?

file status batch-file tasklist exit

4
推荐指数
2
解决办法
2万
查看次数