springboot项目用Desktop打开执行指定网页,在Eclipse运行项目正常,但打包成jar部署到服务器无法打开,也不报错,有时间的朋友们,请帮忙给个思路。
我百度查了很多都是 加 -Djava.awt.headless=false 但这个解决的是不能正常启动的问题。
开发环境 win10+Eclipse+jdk8
以下是我的源码
package com.dgpcp.mcs.controller;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import com.dgpcp.mcs.pojo.UriInfo;
@RestController
@CrossOrigin
@RequestMapping("/z")
public class HelloController {
private static final Logger log = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/1")
public String openUrl(UriInfo uriInfo){
log.info(uriInfo.toString());
try {
Desktop desktop = Desktop.getDesktop();
if ("Y".equals(uriInfo.getFlag())) {
closeBrowse();
}
if (!Desktop.isDesktopSupported()) {
log.error("desktop.isDesktopSupported() 为 false");
return JSON.toJSONString("desktop.isDesktopSupported() 为 false");
}
if (!desktop.isSupported(Desktop.Action.BROWSE)) {
log.error("desktop.isSupported(Desktop.Action.BROWSE) 为 false");
return JSON.toJSONString("desktop.isSupported(Desktop.Action.BROWSE) 为 false");
}
URI uri = new URI(uriInfo.getUri());
desktop.browse(uri);
} catch (Exception e) {
return JSON.toJSONString(e.getMessage());
}
return JSON.toJSONString("success!");
}
private void closeBrowse() {
try {
Runtime.getRuntime().exec("taskkill /F /IM iexplorer.exe");
Runtime.getRuntime().exec("taskkill /im firefox.exe");
Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");
} catch (IOException e) {
e.printStackTrace();
}
}
}
有可能你的java.awt.Desktop类在服务器上不可用,服务器上没有默认的浏览器desktop.browse(uri)也无法使用的。可以使用HttpURLConnection类来打开网页。
不知道你这个问题是否已经解决, 如果还没有解决的话:很多新手程序员在第一次使用Eclipse时不知道怎么创建一个Java程序,在确保Eclipse和 JDK安装成功的前提下,可以按照以下步骤进行:
1.打开Eclipse, 单击菜单栏File,依次点击New、Java Project,如下图所示;
2.随后弹出如下图所示窗口,输入项目名之后,单击Finish;
3.这时,部分Eclipse版本可能会跳出一个窗口,询问是否需要新建模块描述信息,本案例涉及内容比较简单,因此点击Don’t Create即可;
4.点开左侧新建的HelloWorld Java项目,在src目录下新建一个class,具体操作为右击src,并依次点击New、Class,并在弹出窗口内输入程序名,单击Finish;
5.以程序员编程入门的第一个代码Helloworld作为测试,代码如下;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
6.右击代码行,依次点击Run As、1 Java Application运行程序,并输出结果为“Hello World!”,程序运行成功。
上述步骤即在Eclipse中新建Java程序的全过程,希望能对您有所帮助,谢谢!