- 浏览: 2105786 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
无心流泪wan:
private static final Log log = ...
log4j Category.callAppenders Block -
yjxa901:
博主好: http://www.java.net/down ...
jdk debug -
aptech406328627:
大神,请接收我的膜拜吧,纠结了两天的问题,就这么让你给解决了 ...
java.lang.reflect.MalformedParameterizedTypeException -
xukunddp:
谢谢1楼,我也遇到,搞定了
java.lang.reflect.MalformedParameterizedTypeException -
di1984HIT:
学习了!!!!
jvmstat hsperfdata java.io.tmpdir
之前在测试环境使用xming做了linux下jconsole的图像转发,今天想在生产环境也搞下,结果遇到一些问题,这里总结下吧
1:缺少X11显示设置
Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
解决方案:
export DISPLAY=localhost:0
Note:神奇的是我第一次使用就没设置过,还正常了。
2:JDK4以后的awt headless设置
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment at java.lang.Class.forName0(Native Method)
解决方案:
增加这个在java启动参数里
-Djava.awt.headless=true
Note:一般配置jmx都配置这个参数。
3:如果还是有错,例如和第2个错误一致,请检查是否X11转发已经设置过
评论
18 楼
xiangyuwen
2012-02-23
dikar 写道
xiangyuwen 写道
System.setProperty("java.awt.headless", "true");
加上这句好象没用,虽然值改了,但结果还是跟以前报的错误一样。
hadoop jar /home/eclipse/workspace/AVFileMap.jar SPFileMRP -Djava.awt.headless=true 10.1.14.23 11555 hello.avi
运行不了。出错和报错误还是在同样的。
java AVTransmit 可以正常运行(直接在服务器节点,或任何一台节点机上这样运行,都正常)。
我的节点机都是centos5.5版本的,不过都是虚拟机来的,通过VMware这个软件的。
另外,你那个方法getHeadlessMessage()得到null值,函数中用到的
Boolean headless = null;
Boolean defaultHeadless = null;
这2个全局变量我猜的,没申明错吧。
加上这句好象没用,虽然值改了,但结果还是跟以前报的错误一样。
hadoop jar /home/eclipse/workspace/AVFileMap.jar SPFileMRP -Djava.awt.headless=true 10.1.14.23 11555 hello.avi
运行不了。出错和报错误还是在同样的。
java AVTransmit 可以正常运行(直接在服务器节点,或任何一台节点机上这样运行,都正常)。
我的节点机都是centos5.5版本的,不过都是虚拟机来的,通过VMware这个软件的。
另外,你那个方法getHeadlessMessage()得到null值,函数中用到的
Boolean headless = null;
Boolean defaultHeadless = null;
这2个全局变量我猜的,没申明错吧。
如果不介意 ,你发个简单的不带任何业务的代码,我在我的hadoop环境中执行下试试,这样说总是不太明了,我的gmail: dikar222@gmail.com
邮件已经发了,请查收。谢谢!
17 楼
dikar
2012-02-22
xiangyuwen 写道
System.setProperty("java.awt.headless", "true");
加上这句好象没用,虽然值改了,但结果还是跟以前报的错误一样。
hadoop jar /home/eclipse/workspace/AVFileMap.jar SPFileMRP -Djava.awt.headless=true 10.1.14.23 11555 hello.avi
运行不了。出错和报错误还是在同样的。
java AVTransmit 可以正常运行(直接在服务器节点,或任何一台节点机上这样运行,都正常)。
我的节点机都是centos5.5版本的,不过都是虚拟机来的,通过VMware这个软件的。
另外,你那个方法getHeadlessMessage()得到null值,函数中用到的
Boolean headless = null;
Boolean defaultHeadless = null;
这2个全局变量我猜的,没申明错吧。
加上这句好象没用,虽然值改了,但结果还是跟以前报的错误一样。
hadoop jar /home/eclipse/workspace/AVFileMap.jar SPFileMRP -Djava.awt.headless=true 10.1.14.23 11555 hello.avi
运行不了。出错和报错误还是在同样的。
java AVTransmit 可以正常运行(直接在服务器节点,或任何一台节点机上这样运行,都正常)。
我的节点机都是centos5.5版本的,不过都是虚拟机来的,通过VMware这个软件的。
另外,你那个方法getHeadlessMessage()得到null值,函数中用到的
Boolean headless = null;
Boolean defaultHeadless = null;
这2个全局变量我猜的,没申明错吧。
如果不介意 ,你发个简单的不带任何业务的代码,我在我的hadoop环境中执行下试试,这样说总是不太明了,我的gmail: dikar222@gmail.com
16 楼
xiangyuwen
2012-02-22
System.setProperty("java.awt.headless", "true");
加上这句好象没用,虽然值改了,但结果还是跟以前报的错误一样。
hadoop jar /home/eclipse/workspace/AVFileMap.jar SPFileMRP -Djava.awt.headless=true 10.1.14.23 11555 hello.avi
运行不了。出错和报错误还是在同样的。
java AVTransmit 可以正常运行(直接在服务器节点,或任何一台节点机上这样运行,都正常)。
我的节点机都是centos5.5版本的,不过都是虚拟机来的,通过VMware这个软件的。
另外,你那个方法getHeadlessMessage()得到null值,函数中用到的
Boolean headless = null;
Boolean defaultHeadless = null;
这2个全局变量我猜的,没申明错吧。
加上这句好象没用,虽然值改了,但结果还是跟以前报的错误一样。
hadoop jar /home/eclipse/workspace/AVFileMap.jar SPFileMRP -Djava.awt.headless=true 10.1.14.23 11555 hello.avi
运行不了。出错和报错误还是在同样的。
java AVTransmit 可以正常运行(直接在服务器节点,或任何一台节点机上这样运行,都正常)。
我的节点机都是centos5.5版本的,不过都是虚拟机来的,通过VMware这个软件的。
另外,你那个方法getHeadlessMessage()得到null值,函数中用到的
Boolean headless = null;
Boolean defaultHeadless = null;
这2个全局变量我猜的,没申明错吧。
15 楼
dikar
2012-02-22
“ Could not initialize class sun.awt.X11GraphicsEnvironment ” 这个问题如果你在linux下的话,确保必须要传递那个java.awt.headless=true 这样才不会使用X11的环境。
或者在程序中直接写死
System.setProperty("java.awt.headless", "true");
14 楼
dikar
2012-02-22
xiangyuwen 写道
dikar 写道
xiangyuwen 写道
dikar 写道
xiangyuwen 写道
export HADOOP_OPTS="-Djava.awt.headless=true $HADOOP_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
你确定你的这个参数加了是有效的,你可以看下java的启动参数中是否带有的,用ps -aux | fgrep java看看
我查看了一下,已经加进去了。我拷了一部分出来。如下: /usr/java/jdk1.6.0_24/bin/java -Xmx1000m -Djava.awt.headless=true -Dhadoop.log.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/../logs -Dhadoop.log.file=hadoop-root-tasktracker-master.log -Dhadoop.home.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/..
不知道你以前那个图像转发平台代码还有没有。能否发来看看,我的邮箱是xiangyuwen@139.com ,我为这个弄了一星期了。我把我出错的地方代码发上来,不知道你当时图像处理是怎么写的?
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);出错就是这句,可以肯定,buf不为空。
我上面是从视频文件中读出一帧,做一些处理再转发到客户端显示。
首先需要肯定一点的是,你单机运行或者单独在hadoop节点上运行都是没有问题的,说明你的程序代码是没有问题,这里唯一存在的差异是环境本身,例如环境中的参数设置等,数据传输环境等,所以你的代码应该是没有问题的。
其次我这篇文章讲述的是通过xming来做linux下的图像转发到windows,不是写程序来实现的,但是本质和你程序实现的差不多,因为这个里面也涉及到图像数据流的生成组包,通过端口转发出来,然后接收端数据流的重组展示等。所以我这边也只能帮你分析程序的流程,而不能给出可参考的代码实现等。
最后,你贴代码的地方我不太清楚会报什么错,不过我这边有2个怀疑点,仅供参考
1:你可以在这个代码执行前打印下这个值System.getProperty("java.awt.headless"),目的是确保这个参数在程序执行时已经可见,排除这个参数设置的问题。
2:你说转发到客户端显示,这里我不知道你是直接往某个端口写图像数据流还是通过其他方式,你需要确保转发前你的数据已经准备好而且是正确的数据,这样就可以将问题限制到转发这个环节,而不是生成数据这个环节。还有一点,你是否可以将获得的图像帧存为本地图像文件,而不是发往客户端,这样便于确保到底是哪个环节出现问题。
我这边不太懂图像处理方面的知识,如果有说错的地方,请指正。
1.
System.out.println("java.awt.headless = "+ System.getProperty("java.awt.headless"));
System.out.println("dd = "+GraphicsEnvironment.isHeadless());
我单独运行的时候,第一句为空,第二句为false,能转发成功,客户端能播放帧。
如果我打包后执行,用hadoop jar这个,得到同上面一样的结果,我可以肯定单独拿工程编译好的类,到节点机,用java classname,也是没有问题的。
2:如果我用以下代码强制转换:
Field defaultHeadlessField = GraphicsEnvironment.class.getDeclaredField("defaultHeadless");
defaultHeadlessField.setAccessible(true);
defaultHeadlessField.set(null,Boolean.TRUE);
Field headlessField = GraphicsEnvironment.class.getDeclaredField("headless");
headlessField.setAccessible(true);
headlessField.set(null,Boolean.TRUE);
虽然通过System.out.println("dd = "+GraphicsEnvironment.isHeadless());
得到了TRUE,但单独运行也过不去,提示错误是:
Error instantiating class: com.sun.media.content.unknown.Handler : java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
通过hadoop jar也是执行不过。
3.我这个是想把视频做跨屏播放,所以先取帧,再拆分发送。主要现在是他在从Buffer数据转成Image转不过去,没法存文件,保存一帧的图片文件也要先把Buffer数据转成Image,才可以保存图片文件的。我是直接
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);
//这句过不去,下面的就不执行的。这儿报
org.apache.hadoop.mapred.TaskTracker: Error running child : java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
Image[] t_img = this.splitImage(img, 1, 2); // 拆分图像。
sendImageUDP(t_img[0],t_ip[0],t_port); //通过UDP发送图像。
本来得到Image数据后,我是直接通过UDP发送的。
应该明白我的意思了吧。我也感觉应该是系统环境参数那儿没设置对。可是该试的我都基本试过了。包括添加export DISPLAY=localhost:0 而且还在sshd_config(X11Forwarding yes)和ssh_config( ForwardX11 yes)这2个文件设置了。
好像没效果。请高手分析一下,还有那些地方没注意到。
“ Could not initialize class sun.awt.X11GraphicsEnvironment ” 这个问题如果你在linux下的话,确保必须要传递那个java.awt.headless=true 这样才会使用X11的环境。
13 楼
dikar
2012-02-22
xiangyuwen 写道
1.
System.out.println("java.awt.headless = "+ System.getProperty("java.awt.headless"));
System.out.println("dd = "+GraphicsEnvironment.isHeadless());
我单独运行的时候,第一句为空,第二句为false,能转发成功,客户端能播放帧。
如果我打包后执行,用hadoop jar这个,得到同上面一样的结果,我可以肯定单独拿工程编译好的类,到节点机,用java classname,也是没有问题的。
2:如果我用以下代码强制转换:
Field defaultHeadlessField = GraphicsEnvironment.class.getDeclaredField("defaultHeadless");
defaultHeadlessField.setAccessible(true);
defaultHeadlessField.set(null,Boolean.TRUE);
Field headlessField = GraphicsEnvironment.class.getDeclaredField("headless");
headlessField.setAccessible(true);
headlessField.set(null,Boolean.TRUE);
虽然通过System.out.println("dd = "+GraphicsEnvironment.isHeadless());
得到了TRUE,但单独运行也过不去,提示错误是:
Error instantiating class: com.sun.media.content.unknown.Handler : java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
通过hadoop jar也是执行不过。
3.我这个是想把视频做跨屏播放,所以先取帧,再拆分发送。主要现在是他在从Buffer数据转成Image转不过去,没法存文件,保存一帧的图片文件也要先把Buffer数据转成Image,才可以保存图片文件的。我是直接
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);
//这句过不去,下面的就不执行的。这儿报
org.apache.hadoop.mapred.TaskTracker: Error running child : java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
Image[] t_img = this.splitImage(img, 1, 2); // 拆分图像。
sendImageUDP(t_img[0],t_ip[0],t_port); //通过UDP发送图像。
本来得到Image数据后,我是直接通过UDP发送的。
应该明白我的意思了吧。我也感觉应该是系统环境参数那儿没设置对。可是该试的我都基本试过了。包括添加export DISPLAY=localhost:0 而且还在sshd_config(X11Forwarding yes)和ssh_config( ForwardX11 yes)这2个文件设置了。
好像没效果。请高手分析一下,还有那些地方没注意到。
1:这里我需要确定一个问题,你在单机运行成功或者在节点机,都是在linux环境下吗?
2:为了更好的理解报的异常,我找来了源码
/** * @return the value of the property "java.awt.headless" * @since 1.4 */ private static boolean getHeadlessProperty() { if (headless == null) { java.security.AccessController.doPrivileged( new java.security.PrivilegedAction() { public Object run() { String nm = System.getProperty("java.awt.headless"); if (nm == null) { /* No need to ask for DISPLAY when run in a browser */ if (System.getProperty("javaplugin.version") != null) { headless = defaultHeadless = Boolean.FALSE; } else { String osName = System.getProperty("os.name"); headless = defaultHeadless = Boolean.valueOf(("Linux".equals(osName) || "SunOS".equals(osName)) && (System.getenv("DISPLAY") == null)); } } else if (nm.equals("true")) { headless = Boolean.TRUE; } else { headless = Boolean.FALSE; } return null; } } ); } return headless.booleanValue(); }
当上面这个代码返回true时就会报你上面那个错误,具体见
/** * @return warning message if headless state is assumed by default; * null otherwise * @since 1.5 */ static String getHeadlessMessage() { if (headless == null) { getHeadlessProperty(); // initialize the values } return defaultHeadless != Boolean.TRUE ? null : "\nNo X11 DISPLAY variable was set, " + "but this program performed an operation which requires it."; }
你所报的异常,刚好都在我的文章里所提异常之内,我建议先把这2个异常解决掉,当然可能你尝试过各种方法,但是实际测试下,感觉你的设置貌似没有设置对(不能单看你的过程和效果,还需要检测你的设置是否正常,例如使用System直接调用返回结果看)
12 楼
xiangyuwen
2012-02-22
dikar 写道
xiangyuwen 写道
dikar 写道
xiangyuwen 写道
export HADOOP_OPTS="-Djava.awt.headless=true $HADOOP_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
你确定你的这个参数加了是有效的,你可以看下java的启动参数中是否带有的,用ps -aux | fgrep java看看
我查看了一下,已经加进去了。我拷了一部分出来。如下: /usr/java/jdk1.6.0_24/bin/java -Xmx1000m -Djava.awt.headless=true -Dhadoop.log.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/../logs -Dhadoop.log.file=hadoop-root-tasktracker-master.log -Dhadoop.home.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/..
不知道你以前那个图像转发平台代码还有没有。能否发来看看,我的邮箱是xiangyuwen@139.com ,我为这个弄了一星期了。我把我出错的地方代码发上来,不知道你当时图像处理是怎么写的?
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);出错就是这句,可以肯定,buf不为空。
我上面是从视频文件中读出一帧,做一些处理再转发到客户端显示。
首先需要肯定一点的是,你单机运行或者单独在hadoop节点上运行都是没有问题的,说明你的程序代码是没有问题,这里唯一存在的差异是环境本身,例如环境中的参数设置等,数据传输环境等,所以你的代码应该是没有问题的。
其次我这篇文章讲述的是通过xming来做linux下的图像转发到windows,不是写程序来实现的,但是本质和你程序实现的差不多,因为这个里面也涉及到图像数据流的生成组包,通过端口转发出来,然后接收端数据流的重组展示等。所以我这边也只能帮你分析程序的流程,而不能给出可参考的代码实现等。
最后,你贴代码的地方我不太清楚会报什么错,不过我这边有2个怀疑点,仅供参考
1:你可以在这个代码执行前打印下这个值System.getProperty("java.awt.headless"),目的是确保这个参数在程序执行时已经可见,排除这个参数设置的问题。
2:你说转发到客户端显示,这里我不知道你是直接往某个端口写图像数据流还是通过其他方式,你需要确保转发前你的数据已经准备好而且是正确的数据,这样就可以将问题限制到转发这个环节,而不是生成数据这个环节。还有一点,你是否可以将获得的图像帧存为本地图像文件,而不是发往客户端,这样便于确保到底是哪个环节出现问题。
我这边不太懂图像处理方面的知识,如果有说错的地方,请指正。
1.
System.out.println("java.awt.headless = "+ System.getProperty("java.awt.headless"));
System.out.println("dd = "+GraphicsEnvironment.isHeadless());
我单独运行的时候,第一句为空,第二句为false,能转发成功,客户端能播放帧。
如果我打包后执行,用hadoop jar这个,得到同上面一样的结果,我可以肯定单独拿工程编译好的类,到节点机,用java classname,也是没有问题的。
2:如果我用以下代码强制转换:
Field defaultHeadlessField = GraphicsEnvironment.class.getDeclaredField("defaultHeadless");
defaultHeadlessField.setAccessible(true);
defaultHeadlessField.set(null,Boolean.TRUE);
Field headlessField = GraphicsEnvironment.class.getDeclaredField("headless");
headlessField.setAccessible(true);
headlessField.set(null,Boolean.TRUE);
虽然通过System.out.println("dd = "+GraphicsEnvironment.isHeadless());
得到了TRUE,但单独运行也过不去,提示错误是:
Error instantiating class: com.sun.media.content.unknown.Handler : java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
通过hadoop jar也是执行不过。
3.我这个是想把视频做跨屏播放,所以先取帧,再拆分发送。主要现在是他在从Buffer数据转成Image转不过去,没法存文件,保存一帧的图片文件也要先把Buffer数据转成Image,才可以保存图片文件的。我是直接
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);
//这句过不去,下面的就不执行的。这儿报
org.apache.hadoop.mapred.TaskTracker: Error running child : java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
Image[] t_img = this.splitImage(img, 1, 2); // 拆分图像。
sendImageUDP(t_img[0],t_ip[0],t_port); //通过UDP发送图像。
本来得到Image数据后,我是直接通过UDP发送的。
应该明白我的意思了吧。我也感觉应该是系统环境参数那儿没设置对。可是该试的我都基本试过了。包括添加export DISPLAY=localhost:0 而且还在sshd_config(X11Forwarding yes)和ssh_config( ForwardX11 yes)这2个文件设置了。
好像没效果。请高手分析一下,还有那些地方没注意到。
11 楼
dikar
2012-02-22
xiangyuwen 写道
dikar 写道
xiangyuwen 写道
export HADOOP_OPTS="-Djava.awt.headless=true $HADOOP_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
你确定你的这个参数加了是有效的,你可以看下java的启动参数中是否带有的,用ps -aux | fgrep java看看
我查看了一下,已经加进去了。我拷了一部分出来。如下: /usr/java/jdk1.6.0_24/bin/java -Xmx1000m -Djava.awt.headless=true -Dhadoop.log.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/../logs -Dhadoop.log.file=hadoop-root-tasktracker-master.log -Dhadoop.home.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/..
不知道你以前那个图像转发平台代码还有没有。能否发来看看,我的邮箱是xiangyuwen@139.com ,我为这个弄了一星期了。我把我出错的地方代码发上来,不知道你当时图像处理是怎么写的?
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);出错就是这句,可以肯定,buf不为空。
我上面是从视频文件中读出一帧,做一些处理再转发到客户端显示。
首先需要肯定一点的是,你单机运行或者单独在hadoop节点上运行都是没有问题的,说明你的程序代码是没有问题,这里唯一存在的差异是环境本身,例如环境中的参数设置等,数据传输环境等,所以你的代码应该是没有问题的。
其次我这篇文章讲述的是通过xming来做linux下的图像转发到windows,不是写程序来实现的,但是本质和你程序实现的差不多,因为这个里面也涉及到图像数据流的生成组包,通过端口转发出来,然后接收端数据流的重组展示等。所以我这边也只能帮你分析程序的流程,而不能给出可参考的代码实现等。
最后,你贴代码的地方我不太清楚会报什么错,不过我这边有2个怀疑点,仅供参考
1:你可以在这个代码执行前打印下这个值System.getProperty("java.awt.headless"),目的是确保这个参数在程序执行时已经可见,排除这个参数设置的问题。
2:你说转发到客户端显示,这里我不知道你是直接往某个端口写图像数据流还是通过其他方式,你需要确保转发前你的数据已经准备好而且是正确的数据,这样就可以将问题限制到转发这个环节,而不是生成数据这个环节。还有一点,你是否可以将获得的图像帧存为本地图像文件,而不是发往客户端,这样便于确保到底是哪个环节出现问题。
我这边不太懂图像处理方面的知识,如果有说错的地方,请指正。
10 楼
xiangyuwen
2012-02-22
dikar 写道
xiangyuwen 写道
export HADOOP_OPTS="-Djava.awt.headless=true $HADOOP_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
你确定你的这个参数加了是有效的,你可以看下java的启动参数中是否带有的,用ps -aux | fgrep java看看
我查看了一下,已经加进去了。我拷了一部分出来。如下: /usr/java/jdk1.6.0_24/bin/java -Xmx1000m -Djava.awt.headless=true -Dhadoop.log.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/../logs -Dhadoop.log.file=hadoop-root-tasktracker-master.log -Dhadoop.home.dir=/home/hadoop/hadoopinstall/hadoop-0.20.2/bin/..
不知道你以前那个图像转发平台代码还有没有。能否发来看看,我的邮箱是xiangyuwen@139.com ,我为这个弄了一星期了。我把我出错的地方代码发上来,不知道你当时图像处理是怎么写的?
javax.media.Buffer buf = fgc.grabFrame();
BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());
Image img = btoi.createImage(buf);出错就是这句,可以肯定,buf不为空。
我上面是从视频文件中读出一帧,做一些处理再转发到客户端显示。
9 楼
dikar
2012-02-21
xiangyuwen 写道
http://www.itpub.net/thread-396970-1-1.html,这儿看了一下,是不是因为hadoop在子节点上运行程序的时候是通过SSH过去的。就像上面那个文章提到的一样。如果是这样,那在hadoop-env.sh中的export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR" 这个参数要如何设置。楼主碰到过嘛?
hadoop是用ssh在各个子节点上执行任务的,但是我觉得和他无关,你要确保你的hadoop中运行任务的机器的启动脚本里都有加那个参数设置的,至于你上面提到的参数我没见过,所以不太清楚该如何设置。
8 楼
dikar
2012-02-21
xiangyuwen 写道
export HADOOP_OPTS="-Djava.awt.headless=true $HADOOP_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
你确定你的这个参数加了是有效的,你可以看下java的启动参数中是否带有的,用ps -aux | fgrep java看看
7 楼
xiangyuwen
2012-02-21
http://www.itpub.net/thread-396970-1-1.html,这儿看了一下,是不是因为hadoop在子节点上运行程序的时候是通过SSH过去的。就像上面那个文章提到的一样。如果是这样,那在hadoop-env.sh中的export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR" 这个参数要如何设置。楼主碰到过嘛?
6 楼
xiangyuwen
2012-02-21
export HADOOP_OPTS="-Djava.awt.headless=true $HADOOP_OPTS"
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
export HADOOP_CLIENT_OPTS="-Djava.awt.headless=true $HADOOP_CLIENT_OPTS" 在hadoop-env.sh里面加上上面2个,还是没发现有什么效果,还是报同样的问题。刚才上面那个写得有空格。
5 楼
xiangyuwen
2012-02-21
export HADOOP_CLIENT_OPTS = "-Djava.awt.headless=true $HADOOP_CLIENT_OPTS " 或 export -Djava.awt.headless=true 在hadoop-evn.sh中,启动都提示语法错误,要怎么改写呢?
4 楼
dikar
2012-02-21
xiangyuwen 写道
我在hadoop下的conf下的hadoop-env.sh文件中找到这个变量,export HADOOP_CLIENT_OPTS="-Djava_awt.headless=true" 这样可以嘛,还是别的参数,另外发现export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR" 听人说SSH也要设置,不知道是不是。我的QQ是22771432,加我,这儿发有点慢。谢谢!
抱歉,我不上qq的。
恩加到conf里就可以了。
3 楼
xiangyuwen
2012-02-21
我在hadoop下的conf下的hadoop-env.sh文件中找到这个变量,export HADOOP_CLIENT_OPTS="-Djava_awt.headless=true" 这样可以嘛,还是别的参数,另外发现export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR" 听人说SSH也要设置,不知道是不是。我的QQ是22771432,加我,这儿发有点慢。谢谢!
2 楼
dikar
2012-02-21
xiangyuwen 写道
我碰到同样的问题,搞了一星期没搞定。我是处理图像的一个JAVA程序,单独在linux上运行,又没问题(如:java ImageDataSend),但是通过打包成JAR,然后通过其他方式运行(hadoop jar ***.jar ImageDataSend args[]),就出现Could not initialize class sun.awt.X11GraphicsEnvironment 这个问题,因为我要把方案个部署在云计算平台上,虽然云平台把此包分配到节点机上了。但我单独拿到节点机上运行也是没问题的。不知道要在那儿设置。
不好意思才看到。如果你是用hadoop的话,你可以看hadoop的启动文件或者是conf文件
-Djava.awt.headless=true 设置下这个参数
1 楼
xiangyuwen
2012-02-21
我碰到同样的问题,搞了一星期没搞定。我是处理图像的一个JAVA程序,单独在linux上运行,又没问题(如:java ImageDataSend),但是通过打包成JAR,然后通过其他方式运行(hadoop jar ***.jar ImageDataSend args[]),就出现Could not initialize class sun.awt.X11GraphicsEnvironment 这个问题,因为我要把方案个部署在云计算平台上,虽然云平台把此包分配到节点机上了。但我单独拿到节点机上运行也是没问题的。不知道要在那儿设置。
发表评论
-
groovy shell 安全
2017-01-18 11:29 1202groovy 可以动态执行代码,但是我们也想他在一定的沙箱中 ... -
eclipse 插件
2016-11-17 12:00 609eclipse remote editor https: ... -
java method signature
2013-08-12 21:07 2718case 'B': _type = T_BYT ... -
eclipse显示GC的按钮
2013-06-18 19:32 4334同事说idea的一个比较亮的功能是可以手动去GC,然后机器 ... -
好用的maven插件收集
2013-02-22 10:40 13491:Maven Shade Plugin(把所有jar打到一 ... -
查看JVM Flags
2013-01-09 14:22 1334-XX:+PrintFlagsFinal Jav ... -
开源的好用JVM问题排查工具
2013-01-08 09:45 1859TProfiler https://github.com/ ... -
java ocr
2013-01-04 13:06 3019java OCR相关的资料记录 Clara OC ... -
eclipse ast
2012-12-23 22:36 1012Eclipse JDT - Abstract Syntax ... -
正则生成器
2012-12-23 22:24 977能够依据普通文本给出可能的正则组合 http://ww ... -
Kilim
2012-12-14 23:40 1109Java 开发 2.0: Kilim 简介 h ... -
IO Design Patterns Reactor VS Proactor
2012-11-13 01:34 15081:两种高性能I/O设计模式(Reactor/Proactor ... -
antlr
2012-11-13 00:36 12181:使用 Antlr 开发领域语言 http://www.i ... -
java singalException
2012-11-12 21:39 981之前看到毕大师一封关于异常多造成的cpu us很高的分析邮件, ... -
log4j Category.callAppenders Block
2012-11-06 17:01 10105经常在高并发下就遇到log4j用错引起的线程block住的问题 ... -
Troubleshooting JDK
2012-10-26 14:13 1522收集整理下JDK自带的关于 Troubleshooting 的 ... -
JavaOne 2011 Content Catalog
2012-10-14 17:12 1168上一篇讲javaone 2012,这次找了下2011的资料。 ... -
JavaOne 2012 Content Catalog
2012-10-13 16:07 1309转载自:http://marxsoftware.blogspo ... -
Memory usage of Java
2012-10-01 17:30 1218用JDK自带的api计算size,每次都会有个多余的12,看了 ... -
GC roots
2012-10-01 17:07 18501:GC roots http://www.yourkit. ...
相关推荐
在Linux环境下,对...通过以上步骤,你可以在本地使用JConsole有效地监控远程Linux服务器上的WebLogic 12c实例,及时发现并解决可能出现的性能问题。记住,良好的监控策略是保证应用稳定性和高可用性的重要环节。
### JConsole 远程监控 Tomcat 服务 #### 1. 概述 JConsole 是一个集成在 Java 开发工具包 (JDK) 中的图形用户界面 (GUI) 工具,它允许用户通过 Java 管理扩展 (JMX) 对正在运行的 Java 虚拟机 (JVM) 进行监控。...
1. **启动JConsole**:在命令行中,定位到JDK的bin目录下,运行`jconsole.exe`(Windows)或`jconsole`(Unix/Linux)。 2. **连接到应用程序**:JConsole启动后,可以选择本地进程或远程连接。对于本地进程,直接...
要使用Jconsole对Java应用程序进行监控,需要在Linux机器上安装JDK,并配置JDK的环境变量。此外,还需要在本地安装图形化连接工具,如Xmanager。 操作步骤 1. 本地启动Xmanager中的Xmanager - Passive工具,启动后...
- 在Linux服务器上,编辑Tomcat的`bin/catalina.sh`文件,在`# OS specific support.`这一行之后添加JMX相关参数,如: ``` JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management....
博文链接:https://balaschen.iteye.com/blog/125014
### jconsole-tomcat配置详解 #### 一、引言 在现代软件开发与运维过程中,性能监控与故障排查是确保应用稳定运行的关键环节之一。作为一款广泛使用的Java应用服务器,Tomcat同样需要进行细致的监控与管理。而...
使用Jconsole对Java的内存使用情况(JVM)进行监控参照 JDK1.5提供了JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以...
### jconsole远程监控配置手册(经典) #### 一、引言 本文档旨在提供一份详细的jconsole远程监控配置指南,适用于需要对生产环境中的Tomcat应用服务器进行远程监控的场景。通过本指南,用户可以了解到如何正确配置...
### Linux 下 Tomcat 优化设置最大连接数及内存 JConsole 监控 #### 一、Tomcat 内存优化 ##### 1.1 基本原理 在启动 Java 应用程序时,JVM(Java 虚拟机)会为应用程序分配一定的初始内存和最大内存。这些设置对...
例如,Unix/Linux系统下使用`ps`命令查找Java进程的PID,Windows系统则可以通过任务管理器或`jps`命令获取。连接命令格式为`jconsole [PID]`。 3. **远程监控**: 若要远程监控Java应用,需要知道目标主机的IP地址或...
在Unix或Linux系统上,可以通过`ps`命令查找java进程的PID;在Windows系统上,可以通过任务管理器查找java或javaw进程的PID;另外,也可以使用`jps`命令行工具来获取进程ID。 例如,如果测试应用的PID为2956,启动...
对于远程调试,可以使用 `-Xdebug`、`-Xnoagent`、`-Djava.compiler=NONE` 和 `-Xrunjdwp` 参数来配置,例如在 Linux 环境下,通过 `startup.sh jpda` 启动服务,默认监听8000端口。在 Eclipse 等集成开发环境中,也...
在安装JDK 8u261后,开发者可以使用`javac`命令进行Java源代码的编译,`java`命令来运行Java程序,`jar`工具来创建和管理Java档案文件,以及其他如`jconsole`或`jvisualvm`等工具进行性能监控和分析。这个版本的JDK...
JDK是Java开发的核心组成部分,包含了Java编译器(javac)、Java运行时环境(JRE)、调试工具(如jdb和jconsole)、性能分析工具(如jmap和jhat)以及许多其他实用工具。对于开发者而言,它是构建、测试和运行Java...
- `jmap`, `jhat`, 和 `jconsole`等工具进行内存分析和性能监控。 - `javaws`支持Java Web Start技术,允许用户通过浏览器启动Java应用程序。 总之,"jdk6-linux"是Linux系统上的Java开发基础,为开发者提供了在...
JDK 18还可能包含用于调试、性能分析和监控的工具,如JVisualVM和JConsole,这些都是开发者日常工作中不可或缺的工具。 8. **Java SE标准**: JDK 18遵循Java Standard Edition (SE) 规范,提供了标准的Java API...
4. **开发工具**:如jar工具、javadoc工具、jconsole等,帮助开发者打包、文档化和监控Java应用。 在Linux环境中,JDK1.8.0_151是一个重要的版本,它包含了许多优化和新特性,比如Lambda表达式、Stream API、新的...
- `jconsole`和`jvisualvm`:监控和分析Java应用性能的工具。 - `jmap`、`jhat`和`jstack`:用于诊断和故障排查的工具。 在Linux系统上,你可以通过命令行直接调用这些工具,例如`javac HelloWorld.java`来编译名为...