File tree Expand file tree Collapse file tree 1 file changed +25
-4
lines changed
modules/cli/src/main/scala/scala/cli Expand file tree Collapse file tree 1 file changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -112,6 +112,15 @@ object ScalaCli extends CommandsEntryPoint {
112
112
private def ignoreSigpipe (): Unit =
113
113
Signal .handle(new Signal (" PIPE" ), SignalHandler .SIG_IGN )
114
114
115
+ private def isJava17ClassName (name : String ): Boolean =
116
+ name == " java/net/UnixDomainSocketAddress"
117
+
118
+ private lazy val javaMajorVersion =
119
+ sys.props.getOrElse(" java.version" , " 0" )
120
+ .stripSuffix(" 1." )
121
+ .takeWhile(_.isDigit)
122
+ .toInt
123
+
115
124
override def main (args : Array [String ]): Unit = {
116
125
try main0(args)
117
126
catch {
@@ -129,13 +138,25 @@ object ScalaCli extends CommandsEntryPoint {
129
138
deleteOnExit = false
130
139
)
131
140
132
- if (CurrentParams .verbosity >= 2 )
133
- throw e
134
- else {
141
+ if (CurrentParams .verbosity <= 1 ) {
135
142
System .err.println(s " Error: $e" )
136
143
System .err.println(s " For more details, please see ' $tempFile' " )
137
- sys.exit(1 )
138
144
}
145
+
146
+ e match {
147
+ case _ : NoClassDefFoundError
148
+ if isJava17ClassName(
149
+ e.getMessage
150
+ ) && CurrentParams .verbosity <= 1 && javaMajorVersion < 16 =>
151
+ // Actually Java >= 16, but let's recommend a LTS version…
152
+ System .err.println(
153
+ s " Java >= 17 is required to run Scala CLI (found Java $javaMajorVersion) "
154
+ )
155
+ case _ =>
156
+ }
157
+
158
+ if (CurrentParams .verbosity >= 2 ) throw e
159
+ else sys.exit(1 )
139
160
}
140
161
}
141
162
You can’t perform that action at this time.
0 commit comments