Java™ 教程(常见问题及其解决方案)
常见问题(及其解决方案)
编译器的问题
Microsoft Windows系统上常见的错误消息。
'javac' is not recognized as an internal or external command, operable program or batch file
如果你收到这个错误,Windows将无法找到编译器(javac)。
这里有一种方法可以告诉Windows哪里可以找到javac,假设你在C:jdk1.8.0中安装了JDK,在提示符处输入以下命令并按Enter键:
C:\jdk1.8.0\bin\javac HelloWorldApp.java
如果你选择此选项,你必须在你的javac
和java
命令之前使用C:\jdk1.8.0\bin
,每次编译或运行一个程序时,为了避免这种额外的输入,请参考JDK 8安装说明中更新PATH变量的部分。
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
如果收到此错误,则在编译程序时忘记包含.java后缀,记住,这个命令是javac HelloWorldApp.java,不是javac HelloWorldApp。
UNIX系统上常见的错误消息
javac: Command not found
如果你收到这个错误,UNIX将无法找到编译器javac
。
有一种方法可以告诉UNIX在哪里找到javac
,假设你在/usr/local/jdk1.8.0
中安装了JDK,在提示符下输入以下命令并按回车:
/usr/local/jdk1.8.0/javac HelloWorldApp.java
如果你选择此选项,那么每次编译或运行一个程序时,你都必须在你的javac和java命令之前加上
/usr/local/jdk1.8.0/
,为了避免这种额外的输入,你可以将这些信息添加到PATH变量中,这样做的步骤将根据当前运行的shell而有所不同。
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
如果收到此错误,则在编译程序时忘记包含.java后缀,记住,这个命令是javac HelloWorldApp.java
,不是javac HelloWorldApp
。
语法错误(所有平台)
如果你错误地编写程序的一部分,编译器可能会发出语法错误,消息通常显示错误的类型、检测错误的行号、行上的代码以及代码中错误的位置,在语句末尾省略分号(;)会导致以下错误:
testing.java:14: `;' expected.
System.out.println("Input has " + count + " chars.")^
1 error
有时,编译器无法猜测你的意图,如果错误级联超过几行,则会打印出混乱的错误消息或多个错误消息,例如,下面的代码片段省略了粗体行中的分号(;
):
while (System.in.read() != -1)count++
System.out.println("Input has " + count + " chars.");
在处理此代码时,编译器发出两个错误消息:
testing.java:13: Invalid type expression.count++^
testing.java:14: Invalid declaration.System.out.println("Input has " + count + " chars.");^
2 errors
编译器发出两个错误消息,因为在它处理count++
之后,编译器的状态表明它位于表达式的中间,如果没有分号,编译器就无法知道语句是否完整。
如果你看到任何编译错误,那么你的程序没有成功编译,编译器也没有创建.class
文件,仔细检查程序,修复你检测到的任何错误,然后再次尝试。
语义错误
除了验证你的程序语法正确之外,编译器还检查其他基本正确性,例如,每次使用未初始化的变量时,编译器都会警告你:
testing.java:13: Variable count may not have been initialized.count++^
testing.java:14: Variable count may not have been initialized.System.out.println("Input has " + count + " chars.");^
2 errors
同样,你的程序没有成功编译,编译器也没有创建.class
文件,修复错误并再次尝试。
运行时的问题
Microsoft Windows系统上的错误消息。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
如果你收到此错误,java将无法找到你的字节码文件HelloWorldApp.class
。
java试图找到.class
文件的地方之一是当前目录,因此,如果你的.class
文件在C:\java
中,你应该将当前目录更改为C:\java
,若要更改目录,请在提示符处输入以下命令,然后按回车键:
cd c:\java
他的提示应该更改为C:\java>
,如果在提示符处输入dir
,应该会看到.java
和.class
文件,现在再次输入java HelloWorldApp
。
如果仍然有问题,你可能需要更改CLASSPATH
变量,要查看是否需要这样做,请尝试使用以下命令对类路径进行截断。
set CLASSPATH=
现在再次输入java HelloWorldApp,如果该程序现在可以工作,那么你必须更改CLASSPATH
变量,要设置此变量,请参阅JDK 8安装说明中更新路径变量一节,CLASSPATH
变量的设置方式相同。
Could not find or load main class HelloWorldApp.class
初学者程序员常犯的一个错误是尝试在编译器创建的.class
文件上运行java启动程序,例如,如果你试图使用HelloWorldApp.class
而不是java HelloWorldApp
运行程序,你将会得到这个错误。记住,参数是要使用的类的名称,而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的类有一个main
方法来开始执行应用程序,详解“Hello World!”应用中详细讨论了main方法。
UNIX系统上的错误消息
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
如果你收到此错误,java将无法找到你的字节码文件HelloWorldApp.class
。
java试图找到你的字节码文件的地方之一是当前目录,例如,如果你的字节码文件位于/home/jdoe/java
中,你应该将当前目录更改为该目录,若要更改目录,请在提示符处输入以下命令并按回车:
cd /home/jdoe/java
如果在提示符处输入pwd
,应该会看到/home/jdoe/java
,如果在提示符处输入ls
,应该会看到.java
和.class
文件,现在再次输入java HelloWorldApp
。
如果你仍然有问题,你可能需要更改CLASSPATH
环境变量,要查看是否需要这样做,请尝试使用以下命令对类路径进行截断。
unset CLASSPATH
现在再次输入java HelloWorldApp
,如果该程序现在可以工作,那么你将必须以与上面的PATH
变量相同的方式更改CLASSPATH
变量。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
初学者程序员常犯的一个错误是尝试在编译器创建的.class
文件上运行java启动程序,例如,如果你试图使用HelloWorldApp.class
而不是java HelloWorldApp
运行程序,你将会得到这个错误。记住,参数是要使用的类的名称,而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的类有一个主要的方法来开始执行应用程序,详解“Hello World!”应用中详细讨论了main方法。
Applet或Java Web Start应用程序被阻塞
如果你正在通过浏览器运行一个应用程序,并得到安全警告说该应用程序被阻塞,请检查以下条目:
- 验证JAR文件清单中的属性是否为应用程序正在运行的环境正确设置,需要使用Permissions属性,在NetBeans项目中,你可以通过扩展项目文件夹和双击
manifest.mf
,从NetBeans IDE的Files选项卡中打开清单文件。 - 验证应用程序是由一个有效的证书签名的,并且该证书位于签名者CA keystore中。
- 如果你正在运行一个本地applet,请设置一个用于测试的web服务器,你还可以将应用程序添加到异常站点列表中,该列表在Java控制面板的Security选项卡中进行管理。
上一篇:仔细看看“Hello World!”应用程序
下一篇:面向对象编程概念
Java™ 教程(常见问题及其解决方案)相关推荐
- ubuntu下Android开发环境的搭建:eclipse+SDK详细安装教程+常见问题及其解决方案
先讲具体的安装步骤然后再说常见问题及解决方案. ubuntu下安装eclipse+SDK具体步骤: 1.安装JDK: 在官网(http://www.oracle.com/technetwork/jav ...
- java实现html页面转pdf解决方案_[Java教程]纯js实现html转pdf
[Java教程]纯js实现html转pdf 0 2017-02-16 00:00:30 项目开发中遇到了一个变态需求,需要把一整个页面导出为pdf格式,而且要保留页面上的所有的表格.svg图片和样式. ...
- Java™ 教程(目录)
Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进. Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的 ...
- 好程序员Java教程分享JavaScript面试问题及答案(一)
好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...
- java高级教程_高级Java教程
java高级教程 课程大纲 学习Java基础很容易. 但是,真正钻研该语言并研究其更高级的概念和细微差别将使您成为一名出色的Java开发人员. 网络上充斥着"软","便宜 ...
- Katas编写的Java教程:Mars Rover
编程kata是一种练习,可以帮助程序员通过练习和重复练习来磨练自己的技能. 本文是" 通过Katas进行Java教程 "系列的一部分. 本文假定读者已经具有Java的经验,熟悉单元 ...
- 通过Katas进行Java教程:网球比赛(轻松)
编程kata是一种练习,可以帮助程序员通过练习和重复练习来磨练自己的技能. 本文是"通过Katas的Java教程"系列的一部分. 文章分为易,中和难. Fizz Buzz(轻松) ...
- java犯的小错误_[Java教程]十个JavaScript中易犯的小错误,你中了几枪?
[Java教程]十个JavaScript中易犯的小错误,你中了几枪? 0 2015-06-01 12:00:19 序言 在今天,JavaScript已经成为了网页编辑的核心.尤其是过去的几年,互联网见 ...
- javame学习_从零基础自学Java教程:648集全网最新Java学习教程,一学就会
我们都知道Java的功能非常的强大,Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即J ...
- HowToDoInJava Java 教程·翻译完成
原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 核心 Java 教程 什 ...
最新文章
- 关于mina的setSendBufferSize体验
- 控制Domino的log.nsf数据库过大增长
- android手势识别
- anaconda navigator更新_Python 数据分析答疑 1:安装 Anaconda
- pm2.5测试软件,测pm2.5的软件准吗
- 用网络访问控制(NAC)解决网络安全问题
- 超定方程组的经典Gram-Schmidt正交化解法
- OpenCV:图像平移
- python opencv 显示图片 灰度图片 合并图片 保存图片 纵向合并
- 初识中间件Kafka
- 推荐一款低代码报表开发工具,操作类似Excel
- MATLAB离散点边界曲线的绘制
- TJA1043 CanTrcv
- python参考手册 豆瓣_详解python 模拟豆瓣登录(豆瓣6.0)
- win10在哪找计算机配置,电脑教程:windows10的设置在哪
- 软考 - 10 智能家居管理系统
- python web server 知乎_“知乎网”技术方案初探
- iOS---学习研究大牛Git高星项目YYCategories(一)
- 图文详解 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)
- POJ 3470 Walls 已翻译