Tag: jdk1.5

我如何告诉Eclipse编译和构建具有不同JRE版本的项目?

我不确定这个问题是否已经完整回答,或者我的标题是否足够描述我的情况,但是我被要求将项目从使用Ant构建到Maven。 这部分并不算太糟糕,但我被告知这个应用程序是专门为JRE版本1.5设计的,而不是JRE 6我用过的其他所有内容。 现在,我对Eclipse和Java本身非常不熟悉,所以当我被要求告诉Eclipse或Maven使用JRE 1.5构建这个特定项目时,我有点困惑。 我相信,我安装了它,并且我已经尝试按照此处概述的步骤进行操作:( Eclipse:构建并符合不同的JRE版本 ),但我遇到了麻烦。 我已设法更改运行配置以使用备用JRE jre1.5.0_11。 当我尝试构建它时,控制台吐出以下内容: [ERROR] Unable to locate the Javac Compiler in: [ERROR] C:\Program Files (x86)\Java\jre1.5.0_11\..\lib\tools.jar [ERROR] Please ensure you are using JDK 1.4 or above and [ERROR] not a JRE (the com.sun.tools.javac.Main class is required). [ERROR] In most cases you can change the location of your Java […]

正则表达式不适用于java 1.5

public static final String PATTERN = “(?<=(^|,))(([^\",]+)|\"([^\"]*)\")(?=($|,))"; public static void main(String[] args) { String line = ",1234,ABC"; Matcher matcher = Pattern.compile(PATTERN).matcher(line); while (matcher.find()) { if (matcher.group(3) != null) { System.out.println(matcher.group(3)); } else { System.out.println(matcher.group(4)); } } } 我使用上面的程序来解析字符串”,1234,ABC” 。 解析后我应该获得3个令牌,如下所示: 空字符串即“” 1234 ABC 它似乎适用于Java 1.6,但它不适用于Java 1.5。 从Java 1.4开始,正则表达式在java中,为什么我面临这样的问题呢?

@Override对Java 5代码中实现的接口方法的注释没有给出编译错误

我有一个遗留的Java 5项目,至少在2017年12月31日之前仍然会保留。 我的默认系统JDK是1.8。 还安装了JDK 1.5,如在Ubuntu 12.04中安装Java 5和https://askubuntu.com/questions/522523/how-to-install-java-1-5-jdk-in-ubuntu中所述 。 POM包含(如https://stackoverflow.com/a/22398998/766786中所述 ): compileWithJava5 ${env.JAVA5_HOME} ${java.5.home}/jre/lib ${java.5.libs}/rt.jar${path.separator}${java.5.libs}/jce.jar org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 ${java.5.bootclasspath} 设置$JAVA5_HOME : • echo $JAVA5_HOME /usr/lib/jvm/jdk1.5.0_22 据我了解Java + Maven的魔力,这应该是maven-compiler-plugin的有效咒语,指示JDK 1.8伪装成JDK 1.5并使用Java 5引导类路径。 根据为什么javac在@Override注释上失败 , JDK 1.5将不允许@Override对接口的已实现方法允许,仅对超类中存在的重写方法允许。 在此提交中 , @Override注释用于接口的已实现方法,因此这是无效的Java 5代码: private static class DummyEvent implements PdfPTableEvent { @Override public void tableLayout(PdfPTable table, float[][] widths, float[] heights, […]

使用JAX-WS 2.2.5客户端和JDK / JRE 1.5

Java 6随JAX-WS 2.0一起提供。 据我所知,Java 5没有附带JAX-WS。 我能够使用JAX-WS 2.2.5与Java 1.6一起使用Java Endorsed Override Mechansim创建Webservice客户端存根,它将JAX-WS列为可以在Java 6中替换的组件之一。 我所要做的就是在JDK和JRE 6路径中创建一个lib \ endorsed目录,然后将jaxb-api.jar和jaxws-api.jar从JAX-WS 2.2.5复制到名为endorsed的目录中。 JDK和JRE 6都自动选择了2.2.5 JAX-WS。 我在Java 5文档中找不到类似的Java Endorsed Override Mechanism。 我怎么在这里找到一个。 这并没有像Java 6文档那样提及JAX-WS,但它也提到了认可的dirs。 我在JDK和JRE lib目录中创建了一个类似的’endorsed’目录。 我将JAX-WS 2.2.5中的所有jar子(共23个jar子)复制到了背书目录中。 但是,与Java 6不同,javac.exe和java.exe都没有直接选择它。 我不得不使用此命令行参数运行java.exe和javac.exe -Djava.endorsed.dirs=\lib\endorsed 一切似乎工作正常,但我想知道这是否可以保证工作 – 任何人以前遇到的任何问题? JAX-WS 2.2.5是否支持Java 5?

忽略名称空间的JAXB解组将元素属性转换为null

我正在尝试使用JAXB将xml文件解组为对象,但遇到了一些困难。 实际项目在xml文件中有几千行,所以我在较小的范围内重现了错误,如下所示: XML文件: 用于生成JAXB类的XSD文件 代码段1: final JAXBContext context = JAXBContext.newInstance(CatalogueType.class); um = context.createUnmarshaller(); CatalogueType ct = (CatalogueType)um.unmarshal(new File(“file output address”)); 这引发了错误: javax.xml.bind.UnmarshalException: unexpected element (uri:”x-schema:TamsDataSchema.xml”, local:”catalogue”). Expected elements are at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1049) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459) at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at […]

Maven – 使用JDK 7编译JVM 5

我一直试图让它工作一段时间,但还没有运气。 我想运行JAVA_HOME指向JDK7,但我想为JVM 5编译一个项目。我已阅读文档 ,我在SO上发现了类似的post ,但它们似乎都没有在我的设置中工作。 我首先尝试设置target和source但我得到一个错误: org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 [ClassName]不是抽象的,并且不会覆盖CommonDataSource抽象方法getParentLogger() 据我所知,在JDK 7中更新了类,并且添加了抛出错误的额外方法。 我需要使用具有旧实现的JDK 5的运行时,一切都应该正常工作。 所以我这样做: org.apache.maven.plugins maven-compiler-plugin true 1.5 1.5 ${env.JAVA5_HOME}/jre/lib/rt.jar 我在我的系统上正确设置了JAVA5_HOME,我可以看到它在日志中加载了正确的类,但是我遇到了另一个错误: [loading ZipFileIndexFileObject[c:\Program Files\Java\jdk1.5.0_22\jre\lib\rt.jar(*.class)]] … … [ClassName]错误:包javax.crypto不存在 这是公平的,因为我没有在jce.jar包含jce.jar (加密类)。 但是有一件事让我很困惑。 尽管bootclasspath只包含Java 5运行时,但我在类路径中有很多来自JRE7的库。 它们没有在任何地方指定。 [类文件的搜索路径:c:\ Program Files(x86)\ Java \ jdk1.5.0_22 \ jre \ lib \ rt.jar,c:\ Program Files \ Java \ jdk1.7.0_02 \ jre […]

严重:未找到Java类java.util.ArrayList和MIME媒体类型application / json的消息正文编写器

我正在测试RESTful服务,当我执行时我得到exception,虽然我的类路径(WEB-INF / lib)中有以下jar,但我没有使用Maven,我的JDK版本是1.5。 有关此问题的其他问题无助于解决问题。 代码段 @GET @Produces(“application/json”) //@Produces({MediaType.APPLICATION_JSON}) tried this, didn’t work either public List getEmployees() { List empList = myDAO.getAllEmployees(); log.info(“size ” + empList.size()); return empList; } @XmlRootElement public class Emp { …… web.xml中 Jersey Web Application com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages test.employees com.sun.jersey.api.json.POJOMappingFeature true Jersey Web Application /rest/* jar子列表 jersey-server-1.2.jar jersey-core-1.2.jar jsr311-api-1.1.jar asm-3.1.jar jaxb-api-2.0.jar jaxb-impl-2.0.jar jackson-xc-1.2.0.jar […]

JDK中的模板设计模式无法找到定义要按顺序执行的方法集的方法

我正在阅读Template design pattern 。 根据我目前的理解,当我们有一个定义了一组过程(方法)的算法时,可以使用模板设计模式。 主要参与者是 1. Abstract Template class提供定义进程(方法)和执行顺序的template method 。 通常这种方法是最终的,因为它的行为不会被修改。 模板方法中提到的几个进程(方法)都提供了默认实现,而其他一些依赖于扩展Abstract模板类类型的具体类则保留为抽象。 2. Concrete classes extending the Template method 。 如有必要,它们会覆盖默认方法,并提供Abstract Template类中定义的抽象方法的实现。 我试着在JDK中搜索它的实现,我看了java.io类后看到这些类实现了这个模式。 我无法找到定义一组进程(方法)和执行顺序的任何方法。 请提供您宝贵的意见。

JDZ6中的TimeZone.setDefault更改

我只是注意到JDK 6设置默认TimeZone的方法与JDK5不同。 以前,新的默认值将存储在线程局部变量中。 使用JDK6(我刚刚查看了1.6.0.18),实现已经改变,因此如果用户可以写入“user.timezone”属性,或者如果没有安装SecurityManager,则时区会在整个VM范围内发生变化! 否则会发生线程局部更改。 我错了吗? 这似乎是一个相当大的变化,我在网上找不到任何关于它的东西。 这是JDK6代码: private static boolean hasPermission() { boolean hasPermission = true; SecurityManager sm = System.getSecurityManager(); if (sm != null) { try { sm.checkPermission(new PropertyPermission(“user.timezone”, “write”)); } catch (SecurityException e) { hasPermission = false; } } return hasPermission; } /** * Sets the TimeZone that is * returned by the […]