我是通过此命令从具有Java v1.7_40的特定文件夹启动我的应用程序:
start /D <path_to_java1.7_40_bin> /HIGH /B javaw.exe .....
我的系统Java是v1.8_60,即我的PATH
环境变量指向Java v1.8_60。
当我的应用中发生异常时,我会看到:
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_60]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.27]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_60]
我很肯定我的应用程序正在启动而没有任何错误。任何人都可以告诉我为什么堆栈跟踪中的Java版本与应用程序的开始版本不匹配?
答案 0 :(得分:0)
如果你想使用特定版本的javaw,那么我会使用它的完整路径,而不是在这里使用/ D.否则,很难说是否会忽略路径变量。所以......
start /HIGH /B <path_to_java1.7_40_bin>\javaw.exe
我可能会输出值以确保您从正确的目录开始,如果它是变量。问题是/ D只告诉你的应用程序它的起始目录是什么,以供内部参考。但是,如果你从另一个目录调用这个启动命令,那么它仍然会使用你的路径变量来定位javaw.exe。