今天早上开始编译书中的一个小例子。发现了这个错误,很奇怪,因为直接用jdk编译就没有问题,可是如果用eclipse编译,就会出现这个错误,但是一样可以生成.class文件,并且控制台的输出也正常。
我用的就是下面的这个例子:
public class CountInstances {
private static int numInstances = 0;
protected static int getNumInstances() {
return numInstances;
}
private static void addInstance() {
numInstances++;
}
CountInstances() {
CountInstances.addInstance();
}
public static void main(String[] arguments) {
System.out.println("Starting with " +
CountInstances.getNumInstances() + " instances");
for (int i = 0; i < 10; ++i)
new CountInstances();
System.out.println("Created " +
CountInstances.getNumInstances() + " instances");
}
}
上网搜了一下,原因是:eclipse和jdk1.6的版本冲突 sun的网站上有 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6476706 目前还没有解决。
还发现了一段精彩的评论,如下:
经过我仔细的查阅Java Doc,发现其中有这么一段话:
http://download.java.net/jdk6/docs/api/java/io/Console.html
"Whether a virtual machine has a console is dependent upon the underlying platform and also upon the manner in which the virtual machine is invoked. If the virtual machine is started from an interactive command line without redirecting the standard input and output streams then its console will exist and will typically be connected to the keyboard and display from which the virtual machine was launched. If the virtual machine is started automatically, for example by a background job scheduler, then it will typically not have a console." ">http://download.java.net/jdk6/docs/api/java/io/Con..."
翻译一下:
虚拟机是否有一个控制台Console取决于所依赖的平台和虚拟机解析该方法的方式。如果虚拟机是从一个交互式的命令行中启动的,而没有重定向标准输入和输出流,那么虚拟机会自动的连接到键盘作为标准输入,并且把启动虚拟机的地方作为标准输出。如果虚拟机是自动启动的,例如通过后台的一个任务计划,那么典型的情况就是没有Console控制台……。
于是,思考一下我们运行上面程序的地点——Eclipse等集成开发环境,这对于上面描述中的把启动虚拟机的地方作为标准输出来说是不合适的,这里的Console()返回的默认情况下是Null,于是就产生了上面的出错信息。(也许未来Eclipse会有所改进吧)
怎么解决该问题呢?这里提供两条思路给大家(已经实际操作过,可以实现功能的正常运作)
1、使用命令行进行运行,编译可以使用集成开发环境。这样可以完成标准输出。
2、在程序中重定向标准输出到其他的设备或者方式(例如写到文本文件),这样也可以“比较不方便的”完成该功能。
总结:
重申!!文档很重要,特别是官方文档和一些说明书性质的文献资料。预期看什么XX天精通YY技术,还不如首先把官方的文档通读一遍。推荐Java Doc和MSDN Library。
详细解决方案
ERROR: JDWP Unable to get JNI 1.2 environment, jvm-gt;GetEnv() return code = -2
热度:87 发布时间:2024-01-18 05:35:21.0
相关解决方案
- org.apache.jasper.JasperException: Unable to compile class for JSP:该怎么解决
- java报错Syntax error on token "return" invalid Type解决方案
- The server encountered an internal error () that prevented it from fulfilling th解决方案
- org.apache.jasper.JasperException: Unable to compile class for JSP:解决思路
- struts2的Action怎么返回指定路径的jsp或html,而不是返回SUCCESS、ERROR
- 'Update Progress' has encountered a problem An internal error has occurred解决方案
- Unable to load class for JSP,该如何处理
- JSP向SQL数据库中写下数据时提示:Network error IOException: Connection refused: connect
- struts2.3.4.1启动抛错误 Unable to load configuration
- Error creating bean with name 'sessionFactory' defined in ServletContext resourc解决方法
- servlet+jquery1.4.2(ajax error?)解决方案
- Parse error in application web.xml,该如何解决
- java itext导出报Connection reset by peer: socket write error,该怎么处理
- Error reading resource: com/user/User.hbm.xml,该怎么解决
- servlet 的 doGet() 中 return,网页往哪里
- cas客户端有关问题(unable to find valid certification path to requested target)
- fatal error; call to a member function query() on a non-object异常求回答啊 php+sqlite
- Error creating bean with name 'sessionFactory' defined in class path resource解决方法
- 大家帮帮忙呀The server encountered an internal error () that prevented it解决方法
- :Unable to intantiate Action
- Unable to compile class for JSP找不出异常
- 【100分】怎么监控多台服务器的log,alert,error
- SOS-(奇怪现象)服务器暂不可用500 internal server error,该怎么解决
- tomcat没法运行Could not publish to the server. Error while expanding
- JSF中javax.faces.el.PropertyNotFoundException: Error getting property的有关问题
- Syntax error on token "{" { expected after this token,该怎么解决
- WEBstruts The server encountered an internal error () that prevented it fr解决思路
- 'Update Progress' has encountered a problem An internal error has occurred解决方案
- object error!
- ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error,该如何解决