java运行显示“找不到或无法加载主类”!一般都自然想到是环境没配置好.但是 也可能是,绝对路径的问题.

今天一个不会java的朋友也不知道从哪整了一个java文件让我帮忙运行一下,我就直接把这个.java文件复制到桌面然后打开cmd命令行工具,第一步(javac + java文件的绝对路径)编译好使,第二步(java + class文件的绝对路径)就不好使,如:

一开始还真把我给整懵逼了,我以前记得都好使啊,还以为是我的java或者变量啥的有问题了,折腾了半天还是那样,后来发现以前都是切换到.java文件的目录下执行这些命令,这次是第一次输入绝对路径报的错,后来根据这个思路去网上搜了下发现自己基础知识不牢固真是汗颜啊。

解决:

方法一:编译的时候最好用-d参数(后面可加点或者绝对路径),如:javac f:/java/8000/example.java -d .(这个命令可以确保你的class文件会生成在你的当前操作目录下或你想要的路径下),然后进入-d参数后面的路径下你就可以直接执行命令java example

方法二:运行java命令的时候加-cp参数(后面加class文件的路径,和-classpath参数一样,是它的缩写),如:java -cp C:\Users\Administrator\Desktop helloworld

方法三:你要是不乐意,就在classpath的最前边加上你想加的任何目录,这样java程序就会从你设置的第一个路径开始找指定的文件,找不到再去从你设置的第二个路径开始找,如:.;C:\Users\Administrator\Desktop;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。不管你把class文件放在桌面还是C:\Users\Administrator目录下,你运行java helloworld都可以打印出Hello world

JAVA_HOME、CLASSPATH、PATH详解:

为什么要配置JAVA_HOME?:

第一、方便引用,配置path时,就是通过引用JAVA_HOME路径来实现的,这样避免了写很长一串的路径(比如在我的电脑中,path原路径是”C:\Program Files\Java\jdk1.8.0_131\bin”,通过指定JAVA_HOME,现在设定的path路径变成了”%JAVA_HOME%\bin”,更加简洁)。

第二、更加安全,当JDK改变时,仅需要改变JAVA_HOME的路径即可,path和CLASSPATH由于引用了JAVA_HOME,其所对应的路径也会更改。如果不引用JAVA_HOME,则JDK路径改变时,需要手动去设定PATH和CLASSPATH的路径,一旦路径错误,则程序会崩溃。

第三、第三方软件(如tomcat,eclipse)都是引用约定好的JAVA_HOME变量,如果不指定JAVA_HOME,则将无法使用第三方软件。

为什么要配置Path?:

配置Path是为了在任意目录下都能使用java、javac命令。这点可能不少人会疑惑,以往我安装qq等软件并没有去配置环境变量啊,一样可以用,为什么java就要配置环境变量?其实也不难理解,以往之所以能使用qq是因为鼠标点击了qq启动图标(即qq.exe启动程序),通过该启动程序打开了qq。

在java的jdk\bin文件目录下,也有许多类似程序(如java.exe, javac.exe),这些程序都是可以直接启动的,但前提是你需要在这个文件夹(”jdk\bin”文件夹)下来使用这个程序。

比如现在javac.exe在”C:\Program Files\Java\jdk1.8.0_131\bin”目录下,但我在”e:\新建文件夹”下写了一个“Test.java”程序,现在我想用javac命令来编译这个java程序,怎么办呢?最直接的方法就是把”Test.java”文件拷贝到”C:\Program Files\Java\jdk1.8.0_131\bin”目录下,这时候就可以直接通过javac命令来编译。但在实际编程中,我们不可能每次写完一个程序都把该程序拷贝到”C:\Program Files\Java\jdk1.8.0_131\bin”目录下,这就需要我们配置环境变量了,通过配置环境变量,向系统说明javac.exe所在的位置(”C:\Program Files\Java\jdk1.8.0_131\bin”目录),就可以在任意目录下使用javac命令,比如在刚刚的例子中,配置好环境变量,我们就可以直接在”e:\新建文件夹”下使用javac命令来编译”Test.java”文件。

为什么要配置CLASSPATH? :

CLASSPATH 环境变量我放在最后面,是因为以后你出现的莫名其妙的怪问题80%以上都可能是由于CLASSPATH设置不对引起的,所以要加倍小心才行。

配置CLASSPATH是为了引入一些已经写好的类。其实从名字中,也能看出它的功能,CLASSPATH是class(类)和path(路径)两个单词的组合。

设想一下,以往我们在写程序的时候,会使用import语句来引入一些已经写好的类,比如,当你写下improt java.util.时,编译器面对import关键字时,就知道你要引入java.util这个package中的类;但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦

java无法加载主类_java运行显示“找不到或无法加载主类”!相关推荐

  1. java错误 找不到或无法加载主类_java错误:找不到或无法加载主类解决方法

    使用java命令运行.class文件时出现:"错误: 找不到或无法加载主类":(推荐:java视频教程) 解决方法: 使用 java 包名+类名执行,如下:在src下使用 java ...

  2. Java 技术篇-IntelliJ IDEA修改类名后运行提示找不到或无法加载主类问题解决方法

    运行后提示提示"找不到或无法加载主类",看右上角可以看到默认运行的主类名字没有被更新,问题就出在这里了. 右键项目直接运行新项目就好了,后面默认运行主类就会被更新过来了. 可以看到 ...

  3. java运行显示“找不到或无法加载主类”的解决办法(linux)

    要是配置文件的路径问题.打开终端,输入vi ~/.bashrc添加如下代码即可. # set Java environment JAVA_HOME=/usr/local/java/jdk1.8.0 P ...

  4. java找不到主类错误的原因_java错误:找不到或无法加载主类的原因与解决方法...

    1.问题定位 编译(javac)和执行(java)java 程序时,出现这种类型的错误:找不到或无法加载主类:(推荐:java视频教程) 1.首先排除是否是环境变量配置不当造成的问题,只要保证,命令行 ...

  5. C#.NET验证码智能识别学习笔记---06 解决java jre问题:JTessBoxEditor.jar打开的时报找不到或无法加载主类 com.sun.tools.javac.Main错误

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:it.yunsit.cn 碰到了这个问题在网上搜了下, 问题描述:我的问题是在使用javac编译测试程序市,出现如下错误: ...

  6. java加载自己写的类_java 自定义类加载器从磁盘或网络加载类

    一.编写自定义类加载器类 package com.mybatis.entity; import java.io.ByteArrayOutputStream; import java.io.File; ...

  7. Javac可以编译,Java显示找不到或无法加载主类

    运行时候加入完整包名. 转载于:https://www.cnblogs.com/theWinter/p/8594354.html

  8. 动态生成java类_Java 运行时动态生成class

    Java是一门静态语言,通常,我们需要的class在编译的时候就已经生成了,为什么有时候我们还想在运行时动态生成class呢? 因为在有些时候,我们还真得在运行时为一个类动态创建子类.比如,编写一个O ...

  9. java jar 没有主清单_java运行jar命令提示没有主清单属性

    在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性.这是怎么回事? 今天来教大家如何解决这个问题 1.在java中编译JAR文件的时候我们都会用到,jar这个命令. 当用着jar ...

最新文章

  1. 用C#操纵IIS(代码)
  2. python中类的嵌套_python中的嵌套类 | 学步园
  3. TCP的三个接收队列
  4. 沈抚新区机器人产业园怎么_“智慧物流智能AGV技术交流峰会”在长春中日智能制造产业园成功举办...
  5. 解决 supervisor中stop django进程不能真正的停止 问题
  6. 独占设备的分配与回收_灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?...
  7. 致力语言资源建设、常识推理的自然语言处理螺丝钉
  8. linux bash命令_Linux命令-您应该知道的基本Bash命令行技巧
  9. oracle-day1
  10. 计算机原理求循环余数,国防科技大学2003年计算机原理考研试题
  11. [算法]代码运行时间增长数量级对比 线性级别N vs 线性对数级别 NlgN
  12. C++实现二叉树同构
  13. Windows 局域网中文件进行自动同步备份通过synctoy和计划任务实现
  14. 华为出击,智能汽车大蝶变
  15. UEFI启动模式下, 双硬盘安装UBuntu16.04与Win10双系统
  16. 标志logo设计思路
  17. 该知道的都知道 不知道的慢慢了解 正则表达式符号大全
  18. int / long / long int / long long / long long int
  19. day1-python猜单词游戏
  20. 描写火车站场景_描写春运火车拥挤的作文_火车站上

热门文章

  1. GIFLIB 5.0.1 发布,C语言的GIF处理库
  2. xmlhelper (把实体对象转成xml文档)
  3. 转帖节选:卓有成效的管理者(彼得.德鲁克)
  4. ASP.NET MVC 2 正式版发布了的
  5. Bailian2795 金银岛【背包+贪心】
  6. CCF201912-1 报数(100分)【模拟】
  7. Bailian2766 最大子矩阵【最大子段和+DP】
  8. java 基础 —— 文件操作(File)
  9. Java 相关计数问题及其实现
  10. matlab 中使用 GPU 加速运算