我尝试在无头服务器上绘制图像 - 想象一下像带有标记的地图 - 但没有任何反应,甚至不是例外。我已经尝试使用headless = true参数启动应用程序服务器,但它不起作用。有什么想法吗?
public BufferedImage drawOverlay(BufferedImage map, int x, int y) {
BufferedImage combination = null;
try {
InputStream is = FacesContext
.getCurrentInstance()
.getExternalContext()
.getResourceAsStream("/img/marker.png");
BufferedImage overlay = ImageIO.read(is);
int mapWidth = map.getWidth();
int mapHeight = map.getHeight();
int overlayWidth = overlay.getWidth();
int overlayHeight = overlay.getHeight();
int width = Math.max(mapWidth, overlayWidth);
int height = Math.max(mapHeight, overlayHeight);
combination = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics g = combination.getGraphics();
g.drawImage(map, 0, 0, null);
g.drawImage(overlay, x, y, null);
}
catch (IOException ex) {
LOGGER.log(Level.SEVERE, "Couldn't draw overlay");
}
return combination;
}
答案 0 :(得分:0)
如果服务器是linux或unix,通常需要运行到AWT的X服务器。
使用命令
在Linux中启动虚拟X服务器是偶然的$ Xvfb :99
然后,您必须使用DISPLAY环境变量
启动Java服务器export DISPLAY=:99