标签: classpath

如何使用通配符名称发现Java jar中的资源?

我想使用通配符模式发现我的ClassLoader知道的所有xml文件.有没有办法做到这一点?

java classpath

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

在命令行运行java程序,我做错了什么?

注意 我正在运行Windows,路径看起来像是linus,因为我手动输入它,这就是我对路径的看法.

我正在尝试运行一个java类我已经构建来诊断我与数据库的连接,它引用了oracle jdbc适配器.

当我在没有类路径的情况下运行它时:

%> java DBDiagnostics <connectionString>
Run Code Online (Sandbox Code Playgroud)

当它到达以下代码行时我得到一个异常:

Class.forName("oracle.jdbc.pool.OracleDataSource").newInstance();
Run Code Online (Sandbox Code Playgroud)

除以下异常:

java.lang.ClassNotFoundException: oracle.jdbc.pool.OracleDataSource
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at DBDiagnostics.GetConnection(DBDiagnostics.java:43)
        at DBDiagnostics.runDiagnostic(DBDiagnostics.java:29)
        at DBDiagnostics.main(DBDiagnostics.java:18)
Creating connection.
java.sql.SQLException: No suitable driver found for lskd
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)
        at DBDiagnostics.GetConnection(DBDiagnostics.java:55)
        at DBDiagnostics.runDiagnostic(DBDiagnostics.java:29)
        at DBDiagnostics.main(DBDiagnostics.java:18)
Veryfying connectivity to Database
Exception in thread "main" java.lang.NullPointerException
        at DBDiagnostics.verifyTable(DBDiagnostics.java:86)
        at DBDiagnostics.verifyTable(DBDiagnostics.java:76)
        at DBDiagnostics.verifyDatabseConnectivity(DBDiagnostics.java:68)
        at DBDiagnostics.runDiagnostic(DBDiagnostics.java:36)
        at DBDiagnostics.main(DBDiagnostics.java:18)
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我需要将它包含在类路径中.

所以,我尝试将它添加到类路径中,如下所示: …

java classpath

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

在Java中运行时下载JAR文件

我想知道是否有可能在启动时有一个Java桌面应用程序,查看某个URL,看看是否需要更新,如果是这样,下载必要的JAR文件,并将它们添加到运行程序的类路径中.

如果旧的罐子在那里,它们不应该已经加载到类加载器中,此时应该是吗?是否有可能在加载w/out重启应用程序之前将它们换掉?

java jar classpath auto-update

8
推荐指数
2
解决办法
2489
查看次数

在遗留的junit测试套件中解决java classpath地狱

假设我有一个遗留的JUnit测试套件,其中包括以下测试:

public class AwesomeTest {
     public void testBusinessLogic() {
     ...
     [awesome mocking library]
     ...
     }
}

public class AmazingTest {
    public void testBusinessProcess() {
    ...
    [amazing xml operation]
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

现在假设Awesome Mocking库依赖于包含该类的Awesome BCEL字节码生成库,org.useful.XMLClass该库具有XMLClass的版本1.

现在假设Amazing Xml操作依赖于包含该类的Amazing Xml库,org.useful.XMLClass并且该库具有XML Class的版本2.

还假设该类的版本2不向后兼容版本1 - 因此哪个版本在类路径中具有更高的优先级 - 它打破了另一个版本的依赖性.

还假设有400个测试依赖于令人敬畏的模拟库 - 所以重写不是一个理想的选择.

还假设一些关键业务功能已经使用了惊人的xml库构建 - 并且强烈建议不要重写它.

你如何解决这个类路径地狱的情况 - 除了运行ant测试(假设你用Ant运行它们)两次使用两个不同的手动排序的类路径和手动确定的测试子集?(我对自定义类加载器的想法持开放态度 - 但这似乎与使用ant解决方案的双自定义类路径具有相同的可维护性水平)

java junit dependencies classpath

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

使用Spring从外部jar自动装配类

我正在尝试使用Spring构建一个独立的应用程序(不在应用程序服务器中运行),我面临以下问题:

我的独立应用程序(启用弹簧)取决于另一个项目(捆绑为jar),其中包含许多服务com.application.service(带注释@Service).

外部项目中没有与spring相关的配置,独立应用程序上下文非常简单,它只包含:

<context:component-scan base-package="com.application" />

以下是依赖于无法获取的服务的Class示例:

@Service
public class StandaloneService {

    @Autowired
    private SomeService someService;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

StandaloneServiceSomeService在外部jar 中,它包含在独立应用程序中.

错误 :

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.application.SomeService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

以下是我创建ApplicationContext并尝试获取服务的方式:

public static void main(String[] args) {

    AbstractApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
    BeanFactory factory = (BeanFactory) context; …
Run Code Online (Sandbox Code Playgroud)

spring classpath classloader maven

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

bootstrap类路径未与-source 1.6一起设置

我正在将我的应用程序从java 1.6升级到1.7.当我尝试使用Maven 3.2.1进行构建时,我的构建失败并出现以下错误消息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project my-app5: Compilation failure: Compilation failure:
[ERROR] could not parse error message: warning: [options] bootstrap class path not set in conjunction with -source 1.6  
Run Code Online (Sandbox Code Playgroud)

我正在使用java 1.7热点,之前我使用的是1.6 jrockit.我的应用程序是多模块,很少有模块像往常一样编译和构建,这个模块失败了.

我已正确设置java home并且mvn --version显示在输出下方:

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T23:07:52+05:30)
Maven home: C:\Users\me\Maven3\apache-maven-3.2.1-bin\apache-maven-3.2.1\bin\..
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: C:\Program Files\jdk17051\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"  
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

classpath jvm-hotspot maven-3

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

如何在java 9中将jar添加到引导类路径中

在我在java 8上运行的应用程序中,我-bootclasspath:p用来向引导类路径添加一个jar.在java 9中,该选项被删除.在java 9中做同样的事情的替代方法是什么?

java classpath bootclasspath java-9

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

Ant copy classpath jar到目录

我确信这要么是之前被要求的,要么是非常简单的.但无论出于何种原因,我似乎无法使其发挥作用.我想使用ant将${build.classpath}(包含冒号分隔的jar列表)复制到${output.dir}/myapp/WEB-INF/lib.

我现在有这个,它似乎不起作用:

<copy toDir="${output.dir}/myapp/WEB-INF/lib">
  <fileset file="${build.classpath}" />
</copy>
Run Code Online (Sandbox Code Playgroud)

它将整个类路径视为一个文件.我如何让它工作?

java ant copy classpath

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

Tomcat 7将所有日志记录到catalina.out中,但不记录到log4j2定义的文件中

在将我的应用程序转换为Web应用程序之前 Log4j将日志记录在我在log4j2.xml中定义的正确日志文件(info.log和debug.log)中.

但是当我将我的应用程序更改为web.app时,所有日志现在都记录到servlet容器(tomcat 7)中的catalina.out文件中.部署应用程序后,log4j2会创建这些日志文件,但它们仍为空,所有日志都会转到catalina.out文件.

你能说出我做错了吗?

在web.xml中,我添加了必要的配置.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>project-service</display-name>

    <!-- Support for Spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <param-value>log4j2.xml</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>


</web-app>
Run Code Online (Sandbox Code Playgroud)

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" strict="true" name="XMLConfigTest"
               packages="">         

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <RollingRandomAccessFile name="RollingRandomAccessFileDebug" fileName="/local/deploy/logs/debug.log"
                                 filePattern="logs/$${date:yyyy-MM}/project-%d{MM-dd-yyyy}-%i.log.gz"
                                 immediateFlush="false"
                                 append="false">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] …
Run Code Online (Sandbox Code Playgroud)

java web.xml log4j classpath tomcat7

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

Java 9模块和类路径地狱:冲突的类名

据说java 9模块将解决classpath地狱.但是,我正在考虑以下情况:模块A使用模块B和C.两个模块都将导出具有相同名称和包的类.如何在这里解决类加载问题?

classpath java-9 java-module

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