标签: classpath

JBoss:EAR中的WAR文件在类路径上找不到JAR库

我在JBoss 4.3-eap上使用捆绑的战争,jar和配置文件(.properties文件)部署耳朵时遇到问题.这是我的耳结构:

+app.ear   
  +lib  
    *.jar libraries that the war's use  
    +classes  
      *.properties and other configuration files 
  +META-INF  
    application.xml  
    jbos-app.xml  
  app.war  
  app2.war  
  appn.war  
Run Code Online (Sandbox Code Playgroud)

我在jboss-app.xml中有以下内容:

<jboss-app>
  <jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>    
Run Code Online (Sandbox Code Playgroud)

我的application.xml看起来像这样:

<application id="app_id">
  <display-name>App>/display-name>
  <description>TheApp>/description>
<!--  
  <module  id="core">
    <java>lib/core.jar</java>
  </module>

  <module id="tag">
    <java>lib/tag.jar</java>
  </module>
-->  
  <module id="app">
    <web>
      <web-uri>app.war</web-uri>
      <context-root>/</context-root>
    </web>
  </module> 

  <module id="app2">
    <web>
      <web-uri>app2.war</web-uri>
      <context-root>/app2</context-root>
    </web>
  </module> 

  <module id="appn">
    <web>
      <web-uri>appn.war</web-uri>
      <context-root>/appn</context-root>
    </web>
  </module>

  <security-role id="secRole">
    <description>users</description>
    <role-name id="appRoleName">users</role-name>
  </security-role>

  <library-directory>lib</library-directory>

</application>
Run Code Online (Sandbox Code Playgroud)

基本上,在部署耳朵时,我遇到了一个问题,其中我的一场战争无法在core.jar文件中找到一个类(java.lang.NoClassDefFoundError).我认为这是因为战争没有找到这个库,即使它在lib文件夹/类路径中.如果我试图取消对前两个模块添加第一方库(core.jar和tag.jar …

java deployment classpath jboss-4.2.x

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

不在类路径中的依赖项的测试资源?

我有一个使用Maven设置的多模块Spring项目:

my-root (pom)
    - my-logic
    - my-webapp (depending on my-logic)
    - my-consoleapp (depending on my-logic)
Run Code Online (Sandbox Code Playgroud)

我的测试类继承AbstractTransactionalJUnit4SpringContextTests并@ContextCofiguration用于设置ApplicationContext.

例如Spring Controller的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { 
  "classpath:applicationContext-logic-test.xml",
  "classpath:applicationContext-web-test.xml"})
public class ControllerTest extends AbstractTransactionalJUnit4SpringContextTests {

  @Autowired
    private ApplicationContext applicationContext;
    ...
}
Run Code Online (Sandbox Code Playgroud)

如您所见,每个模块都有一个配置XML.我有单独的配置用于测试,驻留在每个模块的测试/资源中(另外还有后缀"-test").如果我在Eclipse中运行JUnit测试,这一切都有效(类编译,运行并且JUnit测试成功).

现在我的问题:使用Maven运行测试将无法正常工作!(例如,使用"Run As">"Maven install" my-root(我使用m2eclipse)).具体来说,它将抛出以下异常:

java.io.FileNotFoundException:类路径资源[applicationContext-logic-test.xml]无法打开,因为它不存在

似乎Maven没有将文件添加my-logic/src/test/resources到运行单元测试时设置的类路径中my-webapp.

我该如何解决这个问题?

java junit spring maven-2 classpath

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

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

编译我的java程序时出现此错误

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

然后我知道我应该添加mysql-connector-java-3.1.14-bin.jarjava类路径的路径.我使用的是Windows XP,我在controlpanel/system/enviromental变量中编辑了类路径

类路径是: .;C:\j2sdk1.4.2_16\jre\lib;

所以它现在成了: .;C:\j2sdk1.4.2_16\jre\lib;C:\Program Files\mysql-connector-java-3.1.144

但是,我仍然得到相同的错误,而且,当我在cmd中键入set classpath(只是为了检查当前的类路径)时,我得到:

CLASSPATH= .;C:\j2sdk1.4.2_16\jre\lib;
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这个问题?

java jdbc classpath classnotfoundexception

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

如何将图标作为类路径资源添加到使用WindowBuilder创建的SWT窗口中?

我正在尝试将*.ico文件中的外部图标添加到我正在使用WindowBuilder设计窗口创建的窗口中.我可以选择shell,它会显示一个"图像"属性字段. 替代文字 这会打开图像选择器对话框: 替代文字

如何使我的图标在此菜单中显示为类路径资源?如果给出了绝对路径,则图像有效,但我不想在我的应用程序中使用该选项.

谢谢!

java eclipse swt classpath windowbuilder

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

如何将文件保存到类路径

如何保存/加载位于我的课程所在的文件?我之前没有到该位置的物理路径,我想动态地找到该文件.

谢谢

编辑:

我想加载一个XML文件并写入和读取它,我不知道如何解决它.

java file-io classpath

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

如何在smartJ中的lib /目录中添加一个jar,并为我的web.xml提供类?

我尝试了很多组合,每次尝试从lib目录添加jar时,intelliJ都会将路径作为src目录.我不知道为什么.当我将jar移动到src /目录时,intelliJ然后将路径切换到lib /目录.我不知道如何让它正常工作.

classpath intellij-idea

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

项目中的罐子的文件夹

当我处理小型桌面项目时,我曾经lib在项目的根目录中创建文件夹,在那里我保留了所有项目的jar依赖项.然后我使用配置构建路径 - > 库 - > 添加JAR ...来手动将此文件夹中的所有jar添加到buildpath/classpath.而且因为添加JAR ...(与添加外部JAR不同)使用相对路径,项目是可移植的,这对我来说很重要.

问题是每次我从我的lib文件夹中添加或删除一个jar时,我需要在项目构建路径设置中手动添加/删除这个jar(当然我经常忘记这样做).

有没有办法告诉Eclipse"这是我保存所有罐子的文件夹.请将所有罐子自动添加到buildpath/classpath"?我试图将此文件夹视为类文件夹(Add class folder...),但它不起作用:(.

PS我知道Maven和Eclipse-Maven集成,但我想保持我的小项目很简单(Maven集成有时令人沮丧,所以我宁愿在这些项目中避免它),所以请不要在回答中提出这个建议.另外正如我所提到的,这些是桌面项目,因此WEB-INF/lib我的项目中没有通常由Java EE插件自动处理的文件夹.

eclipse configuration classpath buildpath

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

如何从InputStream获取Java File绝对路径?

我在Java 6上,我有一个方法可以扫描运行时类路径中的文件config.xml.如果找到,我想将文件的内容读成字符串:

InputStream istream = this.getClass().getClassLoader().getResourceAsStream("config.xml");
if(istream != null) {
    System.out.println("Found config.xml!");

    StringBuffer fileData = new StringBuffer(1000);
    BufferedReader reader;
    try {
        reader = new BufferedReader(new FileReader(fileName));
        char[] buf = new char[1024];
        int numRead = 0;
        while((numRead=reader.read(buf)) != -1) {
            String readData = String.valueOf(buf, 0, numRead);
            fileData.append(readData);
            buf = new char[1024];
            reader.close();
        }
    } catch (FileNotFoundException fnfExc) {
        throw new RuntimeException("FileNotFoundException: " + fnfExc.getMessage());
    } catch (IOException ioExc) {
        throw new RuntimeException("IOException: " + ioExc.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到以下控制台输出:

Found …
Run Code Online (Sandbox Code Playgroud)

java file-io classpath classloader absolute-path

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

导入org.json.JSONObject时,包org.json不存在

我在用:

  • emacs 24.3.1
  • Fedora 20
  • jdk1.7.0_45

我使用emacs创建了一个Java项目,并具有以下项目和类路径文件:

.项目

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>snaprequest</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>
Run Code Online (Sandbox Code Playgroud)

的.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

我有这个版本

在我的Java程序中,我想使用JSONObject,所以我尝试导入以下内容:

import org.json.JSONObject;
Run Code Online (Sandbox Code Playgroud)

当我尝试在命令行上编译时,我收到此错误:

 error: package org.json does not exist
import org.json.JSONObject;
Run Code Online (Sandbox Code Playgroud)

我知道我需要在我的类路径上添加一些内容,以便它可以找到jar文件,但我不确定如何?

java json classpath

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

application.properties外面的jar文件怎么样

如spring-boot-reference中所述:

在应用程序类路径上(例如在jar中),您可以拥有一个application.properties,它为name提供合理的默认属性值.在新环境中运行时,可以在jar外部提供覆盖名称的application.properties

我将重复的application.properties与覆盖的名称放在与jar文件相同的路径上,但是在运行应用程序时:

java -jar target/myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

名称值没有被覆盖,它仍然指的是jar文件中的application.properties里面的一个.我也尝试过:

java -Dspring.config.location=/target/application.properties -jar target/myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

但它不起作用,请帮忙.

编辑

当我将当前目录更改为target并运行它时,它可以工作.

java -jar myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

为什么?为什么不能在路径之外运行呢?

java classpath spring-boot

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