我正在尝试打包一个适用jpackage
于 Windows 的应用程序。我正在使用Java 19
和WiX 4
。
Package Id Version Commands
---------------------------------------------
wix 4.0.0-preview.1 wix
Run Code Online (Sandbox Code Playgroud)
java 19.0.1 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
根据Packaging Tool User's Guide
,生成windows安装包的要求是:
需要 WiX 3.0 或更高版本。
但是,当尝试生成包时,我收到错误:
[09:26:34.026] Can not find WiX tools (light.exe, candle.exe)
[09:26:34.026] Download WiX 3.0 or later from https://wixtoolset.org and add it to the PATH.
Run Code Online (Sandbox Code Playgroud)
问题的本质很清楚。jpackage
不支持WiX 4
,尽管它没有以纯文本形式写入任何地方。
解决方案也很明确,我安装了WiX 3 …
我正在使用当前最新的 Kotlin 版本 ( 1.9.22
) 并遇到了我无法解释的行为。
此代码会产生运行时错误 ( NullPointerException
):
fun main() {
var name: String? = null
println(name!!.length)
}
Run Code Online (Sandbox Code Playgroud)
虽然此代码会产生编译错误 ( Unresolved reference: length
)
fun main() {
var name: String? = "Joe"
name = null
println(name!!.length)
}
Run Code Online (Sandbox Code Playgroud)
为什么简单地对可为 null 的name
变量进行重新分配就可以让我免于陷入困境NullPointerException
?我希望这两个代码片段在功能上是相同的。