Tag: java 8

registry项错误:Java版本的值为“1.8”,但需要“1.7”

在跑步的时候 sencha app build production 我收到以下错误: 错误:registry项'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion' 具有“1.8”的值,但是“1.7”是必需的。 错误:无法findjava.dll错误:无法findJava SE运行时环境。 java -version ,命令显示如下: Java版本“1.8.0_40”Java™SE运行时环境(build 1.8.0_40-b26)Java HotSpot™64位服务器VM(build 25.40-b25,混合模式) 无法findpath出错的地方。 任何想法? ———————–编辑————————– ———————- 注意 :我正在使用Windows 7(64位)。 我曾尝试卸载sencha touch cmd并重新安装。 但还是一样的错误。 我卸载了所有的Java版本实例,并重新安装最新的一个,仍然存在这个问题。

Java Lambdaexpression式

在Java 8中添加了Lambdaexpression式。我想了解为什么这很重要。 对于那些还没有接触到函数式编程习惯用法的Java程序员来说,这意味着什么? 这是否意味着我可以编写更好或更大规模的代码,或者只是使代码更加冗长。 或者全部。

用于Java 8的Tomcat 8 Maven插件

tomcat7-maven-plugin与tomcat7-maven-plugin服务器和tomcat7-maven-plugin一起工作吗? 我找不到任何tomcat8-maven-plugin 。

Java 8通过方法作为参数

目前正在进入Java 8的lambdaexpression式和方法引用。 我想传递一个没有参数,没有返回值的方法作为另一个方法的参数。 这是我如何做到的: public void one() { System.out.println("one()"); } public void pass() { run(this::one); } public void run(final Function function) { function.call(); } @FunctionalInterface interface Function { void call(); } 我知道java.util.function有一组预定义的函数接口,例如Function<T,R>但是我没有find一个没有参数而没有产生结果的函数接口。

我们应该如何pipe理空值的jdk8stream

各位Java开发人员, 由于JDK8还没有发布,所以我知道这个主题可能会in advance一点(现在也不是这样了),但是我正在阅读一些关于Lambdaexpression式的文章,特别是与被称为Stream的新集合API相关的部分。 下面是Java杂志文章 (它是一个水獭种群algorithm)给出的例子: Set<Otter> otters = getOtters(); System.out.println(otters.stream() .filter(o -> !o.isWild()) .map(o -> o.getKeeper()) .filter(k -> k.isFemale()) .into(new ArrayList<>()) .size()); 我的问题是,如果在Set内部迭代的中间发生了什么,其中一个otter是空的? 我会期望一个NullPointerException被抛出,但也许我仍然坚持以前的开发模式(非function),有人可以启发我如何处理? 如果这真的抛出一个NullPointerException,我觉得这个function相当危险,只能使用如下: 开发人员确保没有空值(可能使用以前的.filter(o – > o!= null)) 开发者确保应用程序永远不会生成null otter或一个特殊的NullOtter对象来处理。 什么是最好的select,或者其他select? 谢谢!

parsingLocalDateTime(Java 8)时无法从TemporalAccessor获取LocalDateTime

我只是试图将datestring转换为Java 8中的DateTime对象。在运行以下行: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); LocalDateTime dt = LocalDateTime.parse("20140218", formatter); 我得到以下错误: Exception in thread "main" java.time.format.DateTimeParseException: Text '20140218' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2014-02-18 of type java.time.format.Parsed at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853) at java.time.LocalDateTime.parse(LocalDateTime.java:492) 语法和这里所说的完全一样,但是我有一个例外。 我正在使用JDK-8u25 。

只有在Java8中使用lambda不为null的情况下才会过滤值

我有一个对象列表说car 。 我想根据使用Java 8的一些参数来过滤这个列表。但是如果参数为null ,则会抛出NullPointerException 。 如何过滤出空值? 目前的代码如下 requiredCars = cars.stream().filter(c -> c.getName().startsWith("M")); 如果getName()返回null则抛出NullPointerException 。

在Java 8的java.time API中嘲笑时间

乔达时间有一个很好的DateTimeUtils.setCurrentMillisFixed()来模拟时间。 这在testing中非常实用。 在Java 8的java.time API中是否有相同的东西 ?

Java8stream顺序和并行执行产生不同的结果?

在Java8中运行以下stream示例: System.out.println(Stream .of("a", "b", "c", "d", "e", "f") .reduce("", (s1, s2) -> s1 + "/" + s2) ); 收益率: /a/b/c/d/e/f 当然,这并不奇怪。 由于http://docs.oracle.com/javase/8/docs/api/index.html?overview-summary.htmlstream是顺序执行还是并行执行都无关紧要: 除了标识为明确不确定的操作(如findAny())之外,顺序执行还是并行执行都不应改变计算结果。 AFAIK reduce()是确定性的,并且(s1, s2) -> s1 + "/" + s2是关联的,所以添加parallel()应该产生相同的结果: System.out.println(Stream .of("a", "b", "c", "d", "e", "f") .parallel() .reduce("", (s1, s2) -> s1 + "/" + s2) ); 但是我的机器上的结果是: /a//b//c//d//e//f 这里有什么问题? 顺便说一句:使用(首选的) .collect(Collectors.joining("/"))而不是reduce(…)产生相同的结果a/b/c/d/e/f […]

Java 8的string重复数据删除function

由于Java中的String (与其他语言一样)消耗大量内存,因为每个字符都占用两个字节,所以Java 8引入了一个名为string重复数据删除的新function,它利用了字符数组在string和最终内部这一事实,所以JVM可以搞砸他们。 我已经阅读了这个例子 ,但由于我不是一个亲java编码器,我很难理解这个概念。 这是它所说的, 已经考虑了string复制的各种策略,但现在实现的策略遵循以下方法:垃圾回收器访问String对象时,会注意到char数组。 它取得它们的散列值,并将其与一个对数组的弱引用并列存储。 只要它发现另一个具有相同散列码的string,它们会将它们按字符比较。 如果它们匹配,则会修改一个string并指向第二个string的字符数组。 然后第一个字符数组不再被引用,可以被垃圾收集。 这整个过程当然会带来一些开销,但受到严格的限制。 例如,如果一个string没有被发现重复一段时间,它将不再被检查。 我的第一个问题, 这个话题还没有资源,因为它是最近在Java 8 update 20中添加的,这里有没有人可以分享一些实际的例子来说明如何减lessString在Java中消耗的内存呢? 编辑: 上面的链接说, 只要它发现另一个具有相同散列码的string,它们会将它们按字符比较 我的第二个问题, 如果两个String哈希码相同,那么Strings已经是相同的,那么为什么一旦发现两个String具有相同的哈希码,为什么要比较它们?