我在安装了JavaSE 1.7.0_60的MacOS 10.9.5(Mavericks)上运行我的java应用程序。
我想使用multi-catch语句来捕获一些例外...
但是当我尝试运行我的应用程序时,我收到了这样的错误:
Internal Server Error (500) for request GET /tresTest/authenticate
Compilation error (In /app/controllers/TestBoxController.java around line 57)
The file /app/controllers/TestBoxController.java could not be compiled. Error raised is : Syntax error on tokens, delete these tokens
出现此错误的原因是这行代码:
try {
class.someMethodTrowingException();
} catch (MyExceptionNo1 | MyExceptionNo2 | MyExceptionNo3 e) {
doSomethigUseful();
}
如果在我的控制台上输入java -version
,我得到了这个结果:
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
我无法理解为什么会出现这种行为。 Java7中允许使用多捕获语句,对吧?
我知道如果我以这种方式使用catch,一切顺利
try {
class.someMethodTrowingException();
} catch (MyExceptionNo1 e1) {
doSomethigUseful();
} catch (MyExceptionNo2 e2) {
doSomethigUseful();
} catch (MyExceptionNo3 e3) {
doSomethigUseful();
}
但是我的目标是使用像catch (MyExceptionNo1 | MyExceptionNo2 | MyExceptionNo3 e) {...}
检查出来:http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
发现问题所在。即使我告诉它不使用它,它也会使用1.6 Java兼容性。不明白为什么,并且不了解如何唯一,但至少我明白问题在哪里...... :)
答案 0 :(得分:0)
在maven中添加以下插件,使用Java 1.7版
进行编译<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>