java -version仍然返回旧的java版本.我有红帽linux
我安装了jdk 1.5 int eh follwing path并更新了bask配置文件并做了一个源但仍然是java版本显示1.4
JAVA_HOME =在/ usr /本地/ JDK/jdk1.5.0_10 /斌/ java的路径已经/usr/local/jdk/jdk1.5.0_10/bin
但我仍然看到java -version甚至从bin目录/usr/local/jdk/jdk1.5.0_10/bin中看到如下
java版"1.4.2"gcj(GCC)3.4.6 20060404(Red Hat 3.4.6-10.0.1)版权所有(C)2006 Free Software Foundation,Inc.这是免费软件; 查看复制条件的来源.没有保修; 甚至不适用于适销性或特定用途的适用性.
我正在使用JDK 1.6来运行一个小应用程序.但是我设置了一个非常庞大的类路径,其中包含很多类.
当我运行应用程序时,即使它们实际上没有在我的应用程序中使用,也会加载类加载器中的所有类?如果没有,如何强制类加载器这样做,如果是,如何避免它?谢谢!
例如,我正在使用ant 1.7来运行我的应用程序.
最诚挚的问候,罗伯特吉
我需要使用当前Maven构建中的"main"applicationContext -a.xml创建一个ApplicationContext.另一个来自另一个maven构建的连接类,并在Maven依赖项包含的jar中预设.
这个想法:
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
"classpath*:applicationContext-*.xml"});
Run Code Online (Sandbox Code Playgroud)
这应该从Classpath加载applicationContext-a.xml,因为它在同一个Project中.这有效.
然后应该从dependency-jar加载applicationContext-b.xml. 这不起作用.
注意
"classpath*:applicationContext-*.xml"
Run Code Online (Sandbox Code Playgroud)
只匹配直接类路径中的XML,jar中没有任何内容.
我发现了什么:
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
"classpath*:applicationContext-*.xml", "classpath*:applicationContext-b.xml"});
Run Code Online (Sandbox Code Playgroud)
这是有效的,但前提是我可以在jar:applicationContext-b.xml中明确告诉xml的文件名
我还需要它来进行集成测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"**/applicationContext*.xml"})
public class TestClass { ... }
Run Code Online (Sandbox Code Playgroud)
最好的想法可能是自定义装载机?必须有一种方法来使这个模式工作......
前段时间有一个解决方案,反之亦然:它只从jar获取applicationContext.xml.如果类路径中有另一个,它只匹配此文件.
我正在使用openCSVjar来处理我的解析器项目中的csv,现在我想对我的解析器进行单元测试,为此我得到调用将它传递给我的解析器类的对象,以便我可以继续进行解析.
现在我开始了java.lang.NoClassDefFoundError: au/com/bytecode/opencsv/CSVReader,openCSVjar已经存在于项目中,但现在如果我尝试运行单元测试,我得到上面提到的错误.
如何在intellij中设置项目类路径,以便我可以运行参考所有相关jar的单元测试.
思考?
在我的RAD中,通常当我启动它并进入我的工作区时,我看到一些项目有一个红色错误交叉标志.通常消息是某些库丢失等.但是通过转到每个项目的构建路径,我可以看到库存在于构建路径中.
我通过删除RAD抱怨的库,构建项目,添加库并再次构建项目来解决这个问题.然后错误就消失了.似乎RAD不知何故失去了对图书馆的追踪.然而,.classpath文件显示即使RAD抱怨,该库仍然存在.
这个问题有永久性的解决办法吗?
我对此很新,我需要在Linux机器上安装应用程序(XSLTC)(我使用的是PuTTy).我在这里阅读说明.我引用:
要使用XSLTC,只需将xalan.jar,serializer.jar,xml-apis.jar和xercesImpl.jar放在类路径上
如何将jar文件添加到类路径?
我是Java世界的新手.我想添加Json lib来编译我的程序.我从这里下载了文件.
当我尝试编译程序时
javac -classpath json.jar MyClassName.java
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Note: JsonSimpleExample.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Run Code Online (Sandbox Code Playgroud)
当我试图跑:
java MyClassName
Run Code Online (Sandbox Code Playgroud)
我越来越:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONObject
at MyClassName.main(MyClassName.java:9)
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONObject
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我在哪里弄错了?
我正在更新遗留应用程序以使用Java 6 SE而不是Java 5 SE.该应用程序使用JAXB,在Java 5 SE下,它在类路径上有JAXB参考实现jar.当我转到Java 6 SE(更新38)时,我遇到了一些问题(参见链接的Stackoverflow问题),我在一些帮助下解决了这个问题.
因此,导致问题的下一件事是项目Ant构建脚本.当Ant编译任务执行时,它会获取Java 6 SE附带的JAXB的嵌入式版本,而不是我在类路径中包含的jar版本(JAXB 2.2.6版本).我相信Java 6 SE包含JAXB 2.1.x. 这导致编译时错误,如下所示:
[javac] location: @interface javax.xml.bind.annotation.XmlElementRef
[javac] @XmlElementRef(name = "abbrev", type = JAXBElement.class, required = false)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,JAXB 2.1.x中的@XmlElementRef不存在'required'属性,但它在2.2.x中存在.
如何更改我的Ant构建脚本,以便从构建类路径中获取JAXB 2.2.6 jar而不是Java 6 SE JDK中包含的类?
更新:解决方案基于彼得的答案
<target name="compile" depends="clean">
<javac deprecation="on"
classpathref="prj.classpath"
srcdir="${src}"
destdir="${build.dir}"
debug="on"
debuglevel="lines,vars,source"
source="1.6">
<compilerarg value="-Djava.endorsed.dirs=${lib.ext.dir}/jaxb"/>
</javac>
</target>
Run Code Online (Sandbox Code Playgroud) 我想调整我的代码,使其Spring Batch reader不是从类路径读取资源文件,而是从文件系统(如C:\ inputData.xml)读取资源文件.有什么办法,怎么做?我当前的代码看起来像这样,并xml从资源文件夹中读取给定的文件就好了:
@Bean
ItemReader<FamilyBatchEntity> xmlFamilyFileItemReader() {
StaxEventItemReader<FamilyBatchEntity> xmlFileReader = new StaxEventItemReader<>();
xmlFileReader.setResource(new ClassPathResource("inputData.xml"));
xmlFileReader.setFragmentRootElementName("Familiendetails");
Jaxb2Marshaller insurantMarshaller = new Jaxb2Marshaller();
insurantMarshaller.setClassesToBeBound(FamilyBatchEntity.class);
xmlFileReader.setUnmarshaller(insurantMarshaller);
return xmlFileReader;
}
Run Code Online (Sandbox Code Playgroud) 我目前正在使用以下命令将胖子罐提交给星团。应用程序胖子罐和相关配置在/ home / myapplication文件夹中
$SPARK_HOME/bin/spark-submit --jars $SPARK_HOME/lib/protobuf-java-2.5.0.jar --class MainClass /home/myapplication/my-application-fat.jar -appconf /home/myapplication/application-prop.properties -conf /home/myapplication/application-configuration.conf
Run Code Online (Sandbox Code Playgroud)
现在,我的要求是将外部属性文件/home/myapplication/external-prop.properties添加到驱动程序节点和工作程序节点的类路径。
我搜索了很多资源,但找不到我要的正确解决方案!
请帮助解决问题。提前致谢
classpath ×10
java ×8
classloader ×2
spring ×2
ant ×1
apache-spark ×1
jaxb ×1
json ×1
linux ×1
properties ×1
rad ×1
spark-submit ×1
spring-batch ×1
unit-testing ×1
version ×1
xalan ×1