javac不能运行是怎么回事?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javac不能运行是怎么回事?相关的知识,希望对你有一定的参考价值。

我的环境变量是这样的
Java_home=C:\Program Files\Java\jdk1.7.0_0.5
Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%Java_home%\bin;%Java_home%\jre\bin;
Classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

Classpath=.;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar

这个地方最后面 你没有写分号 正确的为:

Classpath=.;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar;

不写分号容易出 什么找不到main的错误 

如果javac不是内部命令,恭喜你,重新安装JDK 并且重新配置环境变量吧。我以前也遇到过一次。不信你去JDK路径看看 根本没有javac.exe这个东西

javac 是java语言编程编译器。全称java compiler。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。

参考技术A 还有一个可能性,试试看用管理员身份运行cmd。 参考技术B

别用%home_work%,直接用绝对路径,现在win10有些都不读取这个,
不读取%home_work%/bin之所以能在命令符窗口运行java,是因为C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath文件里也有个java.exe,但是没有javac.exe。所以运行不了javac。

 你应该写成path里加个 C:\\ProgramFiles\\Java\\jdk1.7.0_0.5\\bin

不信的话 可以在自己java目录bin下cmd 用 java -version 看一下版本 ,和在命令符窗口查出来的 java -version 版本不一样(只有javac错误的情况下才会出现这种情况,配置成功的不会出现这种情况)

显示该内存不能为written是怎么回事

显示该内存不能为written是怎么回事

计算机系统中运行一些容量较大的程序或者游戏时,系统常常会自动弹出“xx内存不能为read或written”的错误提示,遇到这种故障信息时,我们该如何才能将它有效排除,同时确保下次运行容量较大的程序或者游戏时,系统不会再次出现系统内存读写错误呢?事实上,当我们不幸遭遇上面的故障信息时,我们可以尝试按照如下步骤进行依次排查。

移除无效插件程序

在上网冲浪的过程中,许多插件程序会偷偷地安装到计算机系统中,而不少插件程序往往都有防删除的功能,因此这些插件很容易与其他的应用程序发生冲突,从而间接地引起系统内存读写错误的现象。为了给那些大容量的应用程序或游戏提供一个干净、稳定的工作环境,我们最好定期使用安全防护软件,来查看系统是否被偷偷安装了各种无效的垃圾插件程序,一旦发现的话,那可以直接将它们从系统中及时卸载干净。

手工修复系统服务

与系统内存读写操作有关的Windows Management Instrumentation服务要是发生错误的话,也会导致系统弹出内存读写错误的提示,所以当我们遇到这种错误现象时,可以尝试手工修复一下Windows Management Instrumentation服务,下面就是具体的修复步骤:

首先,用鼠标右键单击系统桌面中的“我的电脑”图标,从弹出的快捷菜单中执行“管理”命令,打开本地系统的计算机管理窗口,在该窗口的左侧显示区域,依次展开“服务和应用程序”/“服务”选项,在对应“服务”选项所在的右侧显示区域中,找到Windows Management Instrumentation服务,并用鼠标右键单击该服务选项,从弹出的快捷菜单中执行“属性”命令,打开服务属性设置界面;

其次在该设置界面的“常规”标签页面中,单击“停止”按钮,将Windows Management Instrumentation服务暂时停止运行。之后,打开计算机系统的资源管理器窗口,在该窗口中依次展开“Windows”、“system32”、“wbem”、“repository”文件夹,然后将“repository”文件夹窗口中的所有文件进行一下备份,备份完成后将该文件夹中的所有内容全部清除掉;

接下来,重新启动一下计算机系统,待系统启动成功后,按前面操作打开Windows Management Instrumentation服务的属性设置界面,单击该界面中的“启动”按钮,相信这么一来Windows Management Instrumentation服务就能正常运行了。

修复系统损坏文件

如果计算机系统不小心感染了病毒或者发生了误删除操作,那么与系统内存读写操作有关的系统文件很可能受到损坏,而这些系统文件一旦受到损坏的话,那么我们就很容易遭遇内存读写故障提示了。所以,我们一旦碰到内存读写错误的提示时,不妨按照如下步骤修复一下系统,看看系统是否存在损坏的文件:

首先使用最新版本的杀毒软件,来对计算机系统进行彻底地病毒查杀操作,因为计算机系统一旦感染了病毒而不进行清除的话,我们即使修复了系统文件,病毒仍然有可能会继续破坏系统文件,所以及时使用杀毒软件来将计算机中的病毒全部清除干净,可以确保系统文件不会继续受到病毒的威胁。

其次使用系统自带的“sfc”命令,来尝试将受到损坏的系统文件修复到正常状态。在修复受损系统文件时,只要在运行中输入“CMD”,打开“命令提示符”窗口,在其中输入字符串命令“sfc/scannow”,单击回车键后,该命令程序就会对系统每个角落处的系统文件进行搜索扫描,一旦发现系统文件的版本不正确或者系统文件已经损坏的话,它就能自动弹出提示界面,要求我们插入Windows系统的安装光盘,以便从中提取正常的系统文件来替代不正常的系统文件,从而达到修复系统文件的目的。要是系统修复操作成功的话,相信我们重新启动计算机系统时,就不会看到有什么不正常的现象了。

及时释放系统内存

我们知道,在运行一些容量较大的程序或者游戏时,需要消耗相当的系统内存资源,要是此时内存空间不够时,那么系统内存读写错误的故障提示很有可能就会发生。为了有效避免这种错误提示,我们最好在运行容量较大的程序或者游戏之前,应该先将计算机系统重新启动一下,这样能够将系统内存空间充分释放出来;如果计算机内存空间本身就比较小的话,那么我们建议各位最好及时升级内存,以便拓展内存的有效使用空间,以防止由于系统内存不足而造成系统内存读写错误的发生。

当然,在系统自身内存空间不足的情况下,我们应该先将那些随机启动的杀毒软件以及相关即时监控的程序暂时关闭掉,之后再尝试运行容量较大的应用程序或者网络游戏,因为杀毒软件及相关监控程序会在一定程度上消耗一些系统内存资源,将它们关闭可以节省不小的内存空间,从而能够有效避免内存读写错误现象的发生。当然,值得注意的是,我们在运行完大容量的程序或游戏之后,还必须记得及时将相关程序的监控功能全部打开
参考技术A 原因:

  1、驱动不稳定,与系统不兼容,这最容易出现内存不能为 Read 或者文件保护 ;

  2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护 ;

  3、系统加载的程序或者系统正在运行的程序之前有冲突,尤其是部分杀毒软件监控程序 ;

  4、系统本身存在漏洞,导致容易受到网络攻击;

  5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误;

  6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡),也有可能是 DX9.0C 版本不够新或者不符合该游戏、显卡驱动 ;

  7、部分软件本身自身不足的问题 ;

  8、电脑硬件过热,也是导致内存不能为 Read 的原因之一;

  9、电脑内存与主板兼容性不好也是导致内存不能为 Read 的致命原因;

  解决方法:

  通用的比较管用的方法是这个:

  在开始-运行里输入CMD确定,在命令行窗口下输入以下内容后按回车

  for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1

  完了后,再输入以下内容并回车

  for %1 in (%windir%\system32\*.dll) do regsvr32 /s %1

  这个要好久,耐心等候,但也可能需要重启后整个效果才会出来。
参考技术B 运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????”指令引用的“0x????”内存。该内存不能为“read”。
“0x???”指令引用的“0x????”内存,该内存不能为“written”。
以上的情况相信大家都应该见到过,甚至说一些网友因为不爽于这个经常出现的错误提示而屡次重装系统。相信普通用户应该不会理解那些复杂的十六进制代码。
出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
一:先说说硬件:
一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用memtest
这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
二、如果都没有,那就从软件方面排除故障了。
先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“
中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如dos),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的bug,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。
参考技术C 您好!如果出现0x???????? 指令引用的0x????????内存。该内存不能为"read"或"written"。答案【原创】★严禁复制★
【1】对电脑没有影响或【偶尔】出现,不用管它,【重启电脑】后可能会自动消失。
【2】盗版系统或【GHOST版本系统】可能会出现该问题,如果系统本身有问题,及时安装官方发行的补丁,检查电脑年、月、日是否正确。建议:【必要时还原或重新安装(正版)系统】
【3】病毒引起的:升级杀毒软件或下载专杀工具,对电脑全盘杀毒。
【4】硬件上的原因:是内存引起的,把内存条拆下清理干净重新安装。【必要时更换内存条】
【5】软件引起的:安装的软件与系统或其它软件发生冲突,(主要检查开机启动项,把没必要启动项的禁用)当打开运行浏览器、播放器、游戏、QQ等,出现该问题时。【一般的解决办法就是卸载该软件重新安装(如果不能解决,需要更换同类型其它版本的软件)或找到发生冲突的软件卸载它,问题才能解决。】
【6】检查驱动是否出现问题,重新安装驱动或及时更新驱动。
【注意】:如果您使用windows IE8浏览器出现该问题,打补丁后,最近一段时间很多网友反映IE变得不太稳定。用360安全卫士修复IE,如果没有效果升级IE或降低IE版本试试。如果还是不行,最简单的解决办法就是:下载更换其它浏览器。【不用删除windows IE,直接使用其它浏览器即可。】比如:360安全浏览器、世界之窗浏览器、傲游等。
可以试试下面的方法:必要时【重新安装系统】
◆试用命令排除
开始-运行- 输入cmd-- 回车,在命令提示符下输入下面命令
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。
完成后,在输入下面的
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。
如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。【重启电脑】
参考技术D 一般是内存条兼容性问题或者就是有坏的内存芯片,换内存条。

以上是关于javac不能运行是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

在cmd中可以运行javac 但不能运行Java

java怎么用cmd运行包中的类

在命令提示符窗口里输入javac有反应,但是输入java不能运行?

iis可以运行但是界面不能在桌面显示是怎么回事

我在linux 下装JDK包后,配置了变量,测试javac test.java命令不报错也不输出,怎么回事

为啥使用cmd之后javac正常运行,但是在创建的java文件中找不到class??