我想使用通配符模式发现我的ClassLoader知道的所有xml文件.有没有办法做到这一点?
注意 我正在运行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)
我认为这是因为我需要将它包含在类路径中.
所以,我尝试将它添加到类路径中,如下所示: …
我有下面的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"中的异常
任何帮助是极大的赞赏.谢谢
我正在尝试为IzPack安装程序创建自定义面板.这意味着我必须扩展IzPanel.然而,似乎如果我这样做,扩展面板需要在该com.izforge.izpack.panels包.
然后我找到了这篇文章,其中规定:
我对第1和第4点提出异议.他们暗示我必须为我创建的每个自定义IzPanel 创建一个额外的JAR文件.此外,我必须通过将这些JAR添加到其子目录之一来修改IzPack安装.
这篇文章是否已经过时(2008年)并且可以被安全地忽略,或者这仍然是正确的吗?
如果不是,我怎么能避免这种情况,而只是在类路径上使用扩展的IzPanel?
谢谢!
我需要从Java WAR应用程序中的类路径中读取文本文件.我怎么能把它读作InputStream.文件位于/ WEB-INF/classes /文件夹中,但是当我使用以下代码时,它只返回null.
InputStream input = servletContext.getClass().getClassLoader().getResourceAsStream("my_filename.txt");
Run Code Online (Sandbox Code Playgroud) 我在使用控制台和/或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) 我在当前目录中有一些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
这个问题并不是指在整个集群中分发罐子以供工人使用它们.
它指的是在客户端计算机上指定许多其他库.更具体一点:我正在尝试运行以下命令以检索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脚本在类路径中自动包含的库)
一些可能有用的信息:
export HADOOP_CLASSPATH=$HADOOP_HOME/lib这可能解释了为什么忽略了我的HADOOP_CLASSPATH env var.为什么我们需要Path和ClassPath?使用像eclipse这样的IDE我们还需要添加路径吗?
在我在java 8上运行的应用程序中,我-bootclasspath:p用来向引导类路径添加一个jar.在java 9中,该选项被删除.在java 9中做同样的事情的替代方法是什么?