我的项目由 Maven 驱动,使用不是我自己制作的 POM(来自 Vaadin)。显然,我在项目中看到的 POM 文件依赖于其他 POM 文件的某种继承。虽然我在自己的 POM 中没有看到 的依赖项maven-surefire-plugin,但在我的项目中找到了这个工件,正如您在 IntelliJ 2019 的屏幕截图的右侧看到的那样。
我不是 Maven maven,所以我不知道确切的细节,但在查探中我发现了一些import行,所以我猜测 Maven POM 可以动态地从其他 POM 继承。
问题是我的项目中存在的版本maven-surefire-plugin相当旧,版本 2.12.4。我正在尝试运行JUnit 5,它需要 2.22.0或更高版本。当前版本是3.0.0-M3.
查看粉色箭头的左端,您可以看到我dependency在 POM 中添加了一个元素。
<dependency>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-surefire-plugin</artifactId>\n <version>3.0.0-M3</version>\n </dependency>\nRun Code Online (Sandbox Code Playgroud)\n\n在左箭头提示上,我要求3.0.0-M3尝试覆盖2.12.4右箭头提示上看到的神秘导入/继承的指定版本。但我的尝试失败了,因为旧版本在执行 Maven后仍然存在clean。install我什至尝试重新启动 IntelliJ。但不行,运行 Maven 时我的 JUnit 5 测试仍然被忽略test。
\xe2\x9e\xa5 是否有某种方法可以覆盖显然从某些神秘来源继承的依赖项的版本? …
我正在尝试将 19 位 Unix 时间戳(例如(五分之一))转换为1558439504711000000可读的日期/时间格式。我的时间戳以 6 个零结尾,这表明时间以纳秒为单位。
我遇到过一些例子,人们使用了我不需要的时区。另一个例子使用 ofEpochSecond ,如下所示:
Instant instant = Instant.ofEpochSecond(seconds, nanos);
Run Code Online (Sandbox Code Playgroud)
但我不确定是否需要使用ofEpochSecond。
下面的代码给出了我实现这一目标的最新方法:
String timeStamp = "1558439504711000000";
long unixNanoSeconds = Long.parseLong(timeStamp);
Date date = new java.util.Date(timeStamp*1000L);
// My preferred date format
SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
String formattedDate = sdf.format(date);
System.out.println("The timestamp in your preferred format is: " + formattedDate);
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是这样的:
// The timestamp in your preferred format is: 11-12-49386951 11:43:20
Run Code Online (Sandbox Code Playgroud)
其中不显示年份格式,例如 2019 格式。
我有一个Path指向文件夹的对象。
Path pathToFolder = Paths.get( "/Users/someuser/" );
Run Code Online (Sandbox Code Playgroud)
…或推荐的使用方式Path.of:
Path pathToFolder = Path.of( "/Users/someuser/" );
Run Code Online (Sandbox Code Playgroud)
我想使用Files.newBufferedWriter传递Path对象的位置在该文件夹中创建一个名为“ whatever.text”的文件。
BufferedWriter writer = Files.newBufferedWriter( pathToFile ) ;
Run Code Online (Sandbox Code Playgroud)
如何转换我pathToFolder的Path对象pathToFile?
我不仅仅需要字符串操作,因为它们是在运行时确定的软编码值。而且我也试图跨平台。
这似乎是一个显而易见的问题,但是我找不到任何现有的帖子(该术语确实使搜索变得棘手)。
我有以下代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.UK);
Instant inst = DateTimeUtils.toInstant(sdf.parse("2019-08-13T18:00:00Z"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm").withLocale(Locale.UK).withZone(ZoneId.of("Europe/London"));
System.out.println(formatter.format(inst));
//prints 18:00
Run Code Online (Sandbox Code Playgroud)
这让我感到惊讶,因为我认为inst这将是 GMT/UTC 时间,并且formatter会将其格式化为伦敦时间(该日期为 BST(UTC+1:00)),生成19:00.
我在这里缺少什么?
我猜这是我的代码一个通用的问题,但如果它的确与众不同,这是利用org.threeten.bp.*从类ThreeTen-反向移植项目,在另外的适应Android的早期ThreeTenABP项目。
Vaadin 14手册中的导航生命周期说:
也可以使用中的
addBeforeEnterListener(BeforeEnterListener)方法为该事件注册一个独立的侦听器UI。
但是在具有路由功能的现代Vaadin中,我们不再应该编写UI子类。我的粗略理解是确实存在一个UI为我们自动实例化的对象,然后路由自动替换了该UI对象中的内容。因此,UI对于使用Vaadin Flow的程序员来说,对象的存在应该是透明的。
?那么,新UI实例上的生命周期挂钩是什么,这样我就可以编写一个用户身份验证检查以BeforeEnterListener在所有@Route视图中全局工作?
调用UI.getCurrent不会做,因为我需要从布局中的某个地方调用它,但是我试图在布局存在之前注册一个侦听器。
我有那个代码。
Calendar data = Calendar.getInstance();
data.setTime(new Date());
System.out.println(String.valueOf(data.get(Calendar.YEAR)).substring(2,4));
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
首先,我需要将它放在一个单独的文件中String(将其放入sout)。是否可以?
其次,我必须使用日期格式而不是转换为字符串。例如,获取"19"而不是"2019".
StackOverflow 社区,
我目前正在处理我的新项目,而且我是 Java 和 Android Studio 的新手。我Entry用两个Calendar变量编写了自己的类。是否有更短更简洁的方法来创建新Entry对象,如以下代码所示?
//MainActivity.java
//....
private ArrayList<Entry> initEntrys() {
ArrayList<Entry> list = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
Calendar mStartDate = calendar;
Calendar mEndDate = calendar;
mStartDate.set(2019, 12, 20, 7, 0);
mEndDate.set(2019, 12, 20, 10, 0);
list.add(new Entry(mStartDate, mEndDate));
return list;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。:)
在处理 Java 流时,我们可以使用收集器来生成诸如流之类的集合。
例如,这里我们制作了一个Month枚举对象的流,并为每个对象生成一个String保存月份的本地化名称的流。我们通过调用 将结果收集到 a Listof 类型中。StringCollectors.toList()
List < String > monthNames =
Arrays
.stream( Month.values() )
.map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
.collect( Collectors.toList() )
;
Run Code Online (Sandbox Code Playgroud)
monthNames.toString(): [janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
为了使该列表不可修改,我们可以List.copyOf在 Java 10 及更高版本中调用。
List < String > monthNamesUnmod = List.copyOf( monthNames );
Run Code Online (Sandbox Code Playgroud)
? 有没有办法让带有收集器的流生成不可修改的列表,而我不需要包装对 的调用List.copyOf?
java ×7
calendar ×2
android ×1
arraylist ×1
collectors ×1
date ×1
datetime ×1
filenames ×1
formatting ×1
hook ×1
java-stream ×1
java-time ×1
lifecycle ×1
list ×1
maven ×1
path ×1
pom.xml ×1
string ×1
templates ×1
threetenabp ×1
threetenbp ×1
tostring ×1
unmodifiable ×1
vaadin ×1
vaadin-flow ×1