标签: 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万
查看次数

帮助ant文件 - Java任务的类路径

我有下面的Ant构建文件,并尝试使用目标'run'来执行程序.

<property name="springjar"  location="E:/Tools/spring-30/dist/" />
<property name="logjar"     location="E:/Tools/commons-logging-1.1.1/" />

<patternset id="jar.files"><include name="**/*.jar"/></patternset>

<path id="springlearn.classpath">
    <fileset dir="${springjar}"><patternset refid="jar.files"/></fileset>
    <fileset dir="${logjar}"><patternset refid="jar.files"/></fileset>
</path>


<target name="run" depends="dist" description="Execute the Java Program">
    <java dir ="." fork="true" jar="dist\app.jar" classpathref ="springlearn.classpath">
    </java>
</target>
Run Code Online (Sandbox Code Playgroud)

使用相同的classpathref,我能够成功编译并创建jar,但是当使用目标运行时,我得到以下错误

java.lang.NoClassDefFoundError: org/springframework/core/io/Resource
Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.Resource
    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:289)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Run Code Online (Sandbox Code Playgroud)

线程"main"中的异常

任何帮助是极大的赞赏.谢谢

java ant classpath

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

Izpack:创建自定义面板

我正在尝试为IzPack安装程序创建自定义面板.这意味着我必须扩展IzPanel.然而,似乎如果我这样做,扩展面板需要在该com.izforge.izpack.panels包.

然后我找到了这篇文章,其中规定:

  1. 因此,您必须在自定义面板项目的构建路径中包含IzPack的lib文件夹中的installer.jar.
  2. 您的自定义面板/必须/扩展com.izforge.izpack.installer.IzPanel.
  3. 此外,它/必须/驻留在com.izforge.izpack.panels包中.
  4. 最重要的是,您的构建jar的名称/必须/与自定义面板类的非限定名称相同.

我对第1和第4点提出异议.他们暗示我必须为我创建的每个自定义IzPanel 创建一个额外的JAR文件.此外,我必须通过将这些JAR添加到其子目录之一来修改IzPack安装.

这篇文章是否已经过时(2008年)并且可以被安全地忽略,或者这仍然是正确的吗?
如果不是,我怎么能避免这种情况,而只是在类路径上使用扩展的IzPanel?

谢谢!

java izpack classpath custom-panel izpanel

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

如何从WAR中的classes目录中读取文件?

我需要从Java WAR应用程序中的类路径中读取文本文件.我怎么能把它读作InputStream.文件位于/ WEB-INF/classes /文件夹中,但是当我使用以下代码时,它只返回null.

InputStream input = servletContext.getClass().getClassLoader().getResourceAsStream("my_filename.txt");
Run Code Online (Sandbox Code Playgroud)

java file war classpath

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

Java NoClassDefFoundError尽管设置了classpath

我在使用控制台和/或Ant运行Java应用程序时遇到了一些麻烦.我知道很多启动问题与类路径没有设置或设置不正确有关,虽然我很确定我设置正确,所以我的搜索只产生了结果.

以下是我的应用程序的一般设置:类在包模型,视图和控制器中.controller.Controller是主方法的类.我使用objectdb作为我的JPA提供程序.

我正在使用Ant来编译我的应用程序.

编译之后,我可以使用以下脚本从ant运行我的应用程序:

<target name="run" description="default build process">
    <java fork="true" classname="${main-class}">
        <classpath>
            <path refid="classpath" />
        </classpath>
    </java>
</target>
Run Code Online (Sandbox Code Playgroud)

其中$ {main-class}是controller.Controller和classpath由/ lib和/ dist文件夹组成(应用程序的jar文件被编译为/ dist)

现在,我尝试了所有的.jar文件复制从/ lib和/ DIST到一个单独的文件夹,并运行他们java -jar cooking.jar -cp .导致

Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Persistence
    at model.jpa.JPAModelFactory.<init>(JPAModelFactory.java:28)
    at model.jpa.JPAModelFactory.<init>(JPAModelFactory.java:24)
    at controller.Controller.<init>(Controller.java:59)
    at controller.Controller.main(Controller.java:116)
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 4 more
Run Code Online (Sandbox Code Playgroud)

所以我尝试了ant并略微修改了上面的构建目标:

<target name="run2" description="default build process">
    <java fork="true" …
Run Code Online (Sandbox Code Playgroud)

java classpath noclassdeffounderror

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

在类路径中使用通配符调用java失败

我在当前目录中有一些jar,都需要在类路径中,所以我想使用classpath的通配符约定.命令行是:

java.exe -classpath * org.python.util.jython args
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

Exception in thread "main" java.lang.NoClassDefFoundError: G:/repo/builds/jars/edu_mines_jtk/jar
Caused by: java.lang.ClassNotFoundException: G:.repo.builds.jars.edu_mines_jtk.jar
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: G:/repo/builds/jars/edu_mines_jtk.jar.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

如果我手动展开通配符,请使用

java.exe -classpath edu_mines_jtk.jar;ij.jar;jython.jar;more-jars org.python.util.jython [args]
Run Code Online (Sandbox Code Playgroud)

然后它按预期工作.

我的通配符出了什么问题?

Win7 64位的JRE 1.6.25

java classpath

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

Hadoop HADOOP_CLASSPATH问题

这个问题并不是指在整个集群中分发罐子以供工人使用它们.

它指的是在客户端计算机上指定许多其他库.更具体一点:我正在尝试运行以下命令以检索SequenceFile的内容:

   /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file
Run Code Online (Sandbox Code Playgroud)

它抛出了这个错误: text: java.io.IOException: WritableName can't load class: util.io.DoubleArrayWritable

我有一个名为DoubleArrayWritable的可写类.事实上,在另一台计算机上,一切运行良好.

我试图设置HADOOP_CLASSPATH包含该类但没有结果的jar.实际上,在运行时:

   /path/to/hadoop/script classpath 
Run Code Online (Sandbox Code Playgroud)

结果不包含我添加到HADOOP_CLASSPATH的jar.

问题是:在运行hadoop时如何指定额外的库(通过额外的意思是其他库而不是hadoop脚本在类路径中自动包含的库)

一些可能有用的信息:

  • 我无法修改hadoop.sh脚本(也没有任何相关的脚本)
  • 我无法将我的库复制到hadoop安装目录下的/ lib目录
  • 在从hadoop.sh运行的hadoop-env.sh中有这一行:export HADOOP_CLASSPATH=$HADOOP_HOME/lib这可能解释了为什么忽略了我的HADOOP_CLASSPATH env var.

hadoop jar classpath

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

Java中的Path和ClassPath有什么区别?

为什么我们需要Path和ClassPath?使用像eclipse这样的IDE我们还需要添加路径吗?

java path classpath

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

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

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

java classpath bootclasspath java-9

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