Google Guava有一个始终返回true的谓词.Java 8有类似的东西Predicate吗?我知道我可以使用(foo)->{return true;},但我想要预制的东西,类似于Collections.emptySet().
在Running unit test with Spark 3.3.0 on Java 17 failed with IllegalAccessError: class StorageUtils cannot access class sun.nio.ch.DirectBuffer 中提出了类似的问题,但该问题(和解决方案)仅与单元测试有关。对我来说 Spark 正在破坏程序的实际运行。
根据Spark 概述,Spark 可与 Java 17 配合使用。我在 Windows 10 上使用 Temurin-17.0.4+8 (build 17.0.4+8),包括 Maven 中的 Spark 3.3.0,如下所示:
<scala.version>2.13</scala.version>
<spark.version>3.3.0</spark.version>
...
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我尝试运行一个简单的程序:
final SparkSession spark = SparkSession.builder().appName("Foo Bar").master("local").getOrCreate();
final Dataset<Row> df = spark.read().format("csv").option("header", "false").load("/path/to/file.csv");
df.show(5);
Run Code Online (Sandbox Code Playgroud)
这到处都是:
Caused by: java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x59d016c9) cannot access class …Run Code Online (Sandbox Code Playgroud) 我的Maven安装(Windows 7 64位)有一个.cache几乎3.5GB 的目录!它只包含一个m2e目录.(我正在使用m2e运行Eclipse 4.3M7.)目前内部所有内容都不需要,而且我甚至不知道这些东西是什么!我在.cache网上找不到目录的Maven文档.
那么.m2/repository/.cache和.m2/repository/.cache/m2e目录是什么?他们为什么多年前有这么多东西?我如何处理不再需要的所有东西?
哦,那些棘手的Java 8流与lambdas.它们非常强大,但错综复杂需要一点点围绕它的所有.
假设我有User一个属性类型User.getName().假设我有一个Map<String, User>与名称相关联的用户的地图(例如,登录用户名).让我们进一步说,我有一个比较器的实例UserNameComparator.INSTANCE来排序用户名(可能与花哨的合作者等).
那么如何获取地图中的用户列表,按用户名排序?我可以忽略地图键并执行此操作:
return userMap.values()
.stream()
.sorted((u1, u2) -> {
return UserNameComparator.INSTANCE.compare(u1.getName(), u2.getName());
})
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但是,我必须提取名称以使用的那一行UserNameComparator.INSTANCE似乎太多的手工工作.有什么方法我可以简单地提供User::getName一些映射函数,只是为了排序,并仍然将User实例返回到收集列表中?
额外奖励:如果我想要排序的东西是两个层次,如User.getProfile().getUsername()?
我正在使用Eclipse进行开发,因为IntelliJ无法做的所有事情(例如突出显示变量的所有实例),并且因为IntelliJ在远程连接上比较慢.但是因为我还没有将Maven完全集成到Eclipse中,所以我必须切换回IntelliJ来使用Tomcat编译和运行我的项目.
如何告诉IntelliJ检测文件系统上已更改的所有文件并重新编译它们?(我不想手动打开每个更改的文件以使IntelliJ检测到更改.)在Eclipse中我只刷新项目树[ 1 ] ...
脚注:
是否有任何类似的Intellij(显式设置或其他),消除了必须单击按钮以同步视图与文件系统更改?

我有一个Foo方法接口int Foo.bar(int),我想用Mockito模拟.99如果我传入,我希望模拟的方法返回1,但所有其他值将抛出异常.我可以这样做吗?
final Foo foo = mock(Foo.class);
when(foo.bar(1)).thenReturn(99);
when(foo.bar(anyInt())).thenThrow(new IllegalArgumentException());
Run Code Online (Sandbox Code Playgroud)
换句话说,1优先考虑anyInt()?我不希望它抛出异常1.该文档说,对于多个定义,最后的定义是比较重要的,但我不能告诉这是否意味着对于相同的参数或没有.如果它适用于此,我是否需要先定义通配符anyInt()?或者两者甚至有任何关系,因为其中一个是匹配器而另一个只是一个值?
我刚刚在Windows 10上安装了OpenJDK版本的JDK 11通用可用性版本.我尝试在刚刚发布的Eclipse 2018-09(4.9.0)中将其作为JRE安装,并在Eclipse对话框中显示一条消息:
您选择了此版本的Eclipse JDT尚未完全支持的JRE.某些功能可能无法正常工作.
问题是什么?
更新:从Internet搜索,我发现一些代码似乎表明Eclipse有一个已知Java版本的内部列表,如果新的JDK版本的版本高于已知的Java版本,它会给出上述消息.(这就是我解释代码的方式.)真的吗?Eclipse发布了一个新的2018-09版本,就在JDK 11发布前几天,没有更新其已知Java版本列表以包含Java 11?
也许有人有更权威的答案.
我在采用 NTFS 的 Windows 10 上使用 Java 17。有一个文件A:\\foo.bar显示在 JavaFiles.list()操作中,但是当我尝试使用 Java 读取它时,它会抛出一个java.nio.file.FileSystemException:
\n\nA:\\foo.bar: 该进程无法访问该文件,因为该文件正在被另一个进程使用
\n
没关系。还有另一个低级进程已锁定该文件。当我关闭其他进程时,Java 可以正常访问该文件。事实上,即使 Robocopy 在尝试访问该文件时也会跳过该文件(实际上 Robocopy 会显示已复制该文件,但实际上并未复制)。所以到目前为止,这并不神秘\xe2\x80\x94另一个进程正在锁定该文件以进行独占访问。
\n但这是奇怪的部分。大多数情况下,该文件对于 Java 来说是正常的:
\nA:\\foo.bar显示Files.list()在A:\\.Files.isRegularFile(fooBarFile),它会true按预期返回。Files.isReadable(fooBarFile),它会false按照我的预期进行转换(这在本例中很有用)。Files.readAttributes(fooBarFile, "*")我会看到属性(时间戳等)。Files.readAttributes(fooBarFile, DosFileAttributes.class)它会返回 DOS 属性。但如果我调用Files.exists(fooBarFile)它就会返回false!因此,被另一个进程锁定为独占访问的文件将返回falsefor exists(),在我看来,这似乎不遵循exists()其 …
哦,太好了.总有一些东西...... Grrr ......
无论如何,所以我花了几天时间跋涉模糊,不完整和矛盾的Picasa信息,以便我的Android应用程序可以找到Picasa图片并使用下载管理器下载它.所以刚才我做了最后的润色并点击了"运行"按钮.一切顺利,直到DownloadManager尝试下载文件:
java.lang.IllegalArgumentException: Can only download HTTP URIs: https://example.com/image.jpg
Run Code Online (Sandbox Code Playgroud)
告诉我你在开玩笑.告诉我他们没有制作无法处理SSL的下载管理器......
更好的是,告诉我如何在Android下载管理器中启用SSL访问.
不,我不是在谈论区域偏移 - 这些区域在一年中可能因基于例如夏令时的区域而变化.我在谈论IANA维护的实际时区.我理解ISO 8601 不支持这些,对吗?
什么平台在支持ISO 8601类似字符串表示中识别时区?我注意到最新的Java日期/时间库正在使用扩展的ISO 8601格式,例如2011-12-03T10:15:30+01:00[Europe/Paris].(请参阅DateTimeFormatter API.)
是否有一些融合约定(例如与其他语言和平台一起)用于扩展ISO 8601以支持时区指定?