精华内容
下载资源
问答
  • 今天小编就为大家分享一篇关于Java找不到或无法加载主类及编码错误问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 学习大佬们开发安全小工具,打包jar解决错误: 找不到或无法加载主类 main 1 Maven方式 遇到报错”找不到或无法加载主类 main“ 解决方案 一定加入<build> 中的插件,这里需要注意的是 <mainClass>Main,这里填写的...
  • 安装了jdk 后用cmd运行简单的helloworld文件,编译通过了却无法执行,出现找不到或者无法加载主类的问题。
  • 找不到或无法加载主类

    千次阅读 2019-10-21 17:04:09
    找不到或无法加载主类怎么解决: 前提jdk安装好且环境调好, 针对对象是代码没有问题但就是出现”找不到或无法加载主类”这问题。 例如 在编译器(如IDEA里)创建一个项目名为java的项目:参照地址C:\Users\Desktop\...

    找不到或无法加载主类怎么解决:
    前提jdk安装好且环境调好,
    针对对象是代码没有问题但就是出现”找不到或无法加载主类”这问题。

    例如 在编译器(如IDEA里)创建一个项目名为java的项目:参照地址C:\Users\Desktop\java\src\com\wan.java
    在编译器内(对比于命令提示符界面(win+r:cmd)):
    1,进入select run/debug comfiguration(在run旁边)
    2,编译器内comfiguration:Main class:com.wan(工程内的路径 .文件名)
    造成此错误出现的原因,大致是在编译过程手贱修改了class的位置名字之类,然后comfiguration(配置)又没有随之更新!
    若地址为C:\Users\Desktop\java\src\com\company\wan.java 则第二步
    为comfiguration:Main class:com.company.wan
    在这里插入图片描述
    在这里插入图片描述

    例如:C:\Users\Desktop\java\src\com\wan.java
    命令符界面 win+r:若上面没问题了,在命令符界面仍然有“找不到或无法加载主类”的问题

    地址C:\Users\Desktop\java\src\com\wan.java
    cd到…\java\src\com内: javac wan.java(编译wan.class文件)
    注意:在wan.java所在的文件夹进行此命令
    返回到…\java\src中:编译命令 java com.wan或com/wan
    注意,不要在wan.java所在的文件夹进行命令,在src下运行命令,然后在…/java下运行我曾试过,也都无效。
    在这里插入图片描述

    展开全文
  • 1.要运行主类的class字节码文件 2.系统环境变量设置的问题,推荐使用如下设置方法 java安装目录: C:\Math\Java\jdk1.8.0_91 环境变量设置如下: JAVA_HOME C:\Math\Java\jdk1.8.0_91 Path % JAVA_HOME %\bin ...

    1.要运行主类的class字节码文件

    2.系统环境变量设置的问题,推荐使用如下设置方法

    java安装目录:
    	C:\Math\Java\jdk1.8.0_91
    环境变量设置如下:
    JAVA_HOME   C:\Math\Java\jdk1.8.0_91
    Path   % JAVA_HOME %\bin
    classpath   .;% JAVA_HOME %\jre\lib\rt.jar
    
    展开全文
  • Java命令行运行错误: 找不到或无法加载主类

    万次阅读 多人点赞 2021-01-17 18:15:46
    前言:虽然学习Java语言约有两年多,但在最近需要使用命令行工具编译并运行Java程序时,还是报错了。花费了一些时间,解决了该问题,发现解决方法在初学Java时使用过。...找不到或无法加载主类,主要原因有

    前言:虽然学习Java语言约有两年多,但在最近需要使用命令行工具编译并运行Java程序时,还是报错了。花费了一些时间,解决了该问题,发现解决方法在初学Java时使用过。一则,为了避免以后再出现同样的问题而浪费不必要的时间;二则,作为使用该语言的程序员,对于该语言的一些基本问题,应该有清晰的理解和认识;三则,网上的一些解决方案,不够完备。有的没有解释问题原因,直接给出答案;有的,未列举出某些常见情况的解决方案。因此,写此文章,让读者可以举一反三,深入理解问题。

    一、 问题分析

    找不到或无法加载主类,主要原因有两个:

    1. 类名错误

    2. 类所在位置未添加至类加载路径中

    二、 问题解决

    本部分将针对在“一”中提出的两个问题发生原因,分别进行分析及处理。并且会介绍java的一些和处理问题相关的基本概念。

    1. 类名错误

    全限定类名:包名+类名。另外,当包名为空时(即代码不包含package语句),称类所在包为默认包

    例如,以下代码的全限定类名为:“com.gzn.demo.HelloWorld”

    // 文件名HelloWorld.java
    package com.gzn.demo;
    public class HelloWorld {
        public static void main(String args[]) {
            System.out.println("hello world");
        }
    }
    

    在运行java程序时,全限定类名可以唯一确定该文件,就像是文件系统中路径(相当包名)+文件名(相当类名)可以唯一确定一个文件一样。本质上包名发挥的作用和文件系统中的目录相同,有利于文件分隔避免重名。

    现在存在一个问题,Java是如何识别一个类文件的包名的?
    实际上,包名的识别是通过文件系统的目录实现的 。例如,上文提到的包名为“com.gzn.demo”的HelloWorld.java文件,该文件在文件系统中的位置为 “com\gzn\demo”,编译后的HelloWorld.class也在"com\gzn\demo"目录下,因此,在运行java程序后加载类时,只需在“com\gzn\demo”目录下,查看是否存在要查找的文件即可。简而言之,目录(或路径)名于包名存在一一映射的关系,可认为相等。

    在Windows操作系统的命令行下,运行Java代码的语法格式为,注意,此时java命令位于目录com的上一级目录(一般为项目的目录名);类名不能包含扩展名.class

    Java 全限定类名
    例如java com.gzn.demo.HelloWorld;包名为空则为java HelloWorld

    Windows操作系统中还有另一种语法格式(其他系统未必可以),不常用,使用反斜杠代替了点好,之所以没用正斜杠,个人猜测是为了和系统的文件分隔符进行区分:

    例如Java com/gzn/demo/HelloWorld; 包名为空则为java HelloWorld

    可能出错情况一 :在命令行运行java程序时,类名包含了扩展名

    在helloworld项目目录下运行java命令,HelloWorld.class文件在“com\gzn\demo”目录下,即包名为com.gzn.demo,上文已介绍,不在赘述。
    C:\Users\gzn\helloworld>java com.gzn.demo.HelloWorld.class
    或者包名为空
    C:\Users\gzn\helloworld> java HelloWorld.class
    上述写法,会出现报错,原因是它不符号java运行程序的语法格式,java可能把“HelloWorld.class”作为一个整体类名处理,那么要查找的文件可能是“HelloWorld.class.class”,显然是找不到的。

    可能出错情况二 :运行Java命令时未指明全限定类名的包名部分或指明了包名但Java命令运行的位置不正确
    假设HelloWorld.class,包名为com.gzn.demo,所在位置为: C:\Users\gzn\helloworld\com\gzn\demo
    运行以下命令
    C:\Users\gzn\helloworld\com\gzn\demo>java HelloWorld
    运行命令后,会在当前目录下,查找并读取该文件后,发现该类为“com.gzn.demo.HelloWorld”(全限定类名唯一确定一个类,上文已介绍)与我要运行的类“HelloWorld”并不是同一类,因此,找不到要运行的类。
    于是,很自然的一个想法是运行以下命令
    C:\Users\gzn\helloworld\com\gzn\demo>java com.gzn.demo.HelloWorld
    包名和文件名是一一映射的(上文已介绍),运行命令后,会从命令所在位置开始(即以命令所在位置为相对路径),查找“com\gzn\demo\”路径下的HelloWorld文件。由于“C:\Users\gzn\helloworld\com\gzn\demo”路径下根本不存在目录“com”(更不用说gzn\demo),因此,找不到运行的类。

    正确的运行命令的方法,呼之欲出,只需改变命令的运行位置即可,如下所示
    C:\Users\gzn\helloworld>java com.gzn.demo.HelloWorld
    运行命令后,会在“com\gzn\demo”路径下找到并读取HelloWorld文件,发现该类的全限定名为“com.gzn.demo.HelloWorld”,查找的类正是Java想要运行的类。


    以上是比较初级的出错情况,下文将要介绍相对比较高级的出错情况,这也是其他博文未曾给出解决方案的情况。同时还会介绍classpath的概念,及使用方法。加油!

    2. 类所在位置未添加至类加载路径中

    类加载路径(Classpath):当你的程序依赖第三方或者自己写的类文件时,需要指出上述文件的所在位置,即类加载路径。Java虚拟机的类加载器会在你指定的路径中,查找你的程序所依赖的类文件(依赖的类文件 在import语句中指定)

    classpath可以通过以下两种方式指定:

    方式一:配置环境变量

      这种方式是初学Java者肯定了解的方式,通常在下载完JDK后就会进行配置。然而在JDK1.5之后,官方已不建议使用这种方式来指定类加载路径,原因后文扩展部分会谈及。

    在这里插入图片描述
    说明:“.”表示在当前目录,即java等命令运行时所在目录;
    dt.jar是关于运行环境的类库,主要是用于swing的包,如果不使用可以不配置;
    tools.jar是工具类库,它在编译和运行一个类时被使用

    方式二:java命令的-cp(或-classpath)参数指定(官方建议)

    这种方式是JDK1.5后官方建议的方式。当你在命令行下运行java命令时,如果没有指定-classpath参数,那么默认使用环境变量中设置的ClASSPATH。官方建议,你在运行每个程序时,为其显示设置所依赖的类文件所在的位置,而不是使用“全局”性质的环境变量中CLASSPATH。一旦你运行程序时指定了-classpath参数,环境变量中的CLASSPATH就不会在使用,而是使用你参数的classpath。实际上,JDK1.5以后,官方已经不建议配置CLASSPATH环境变量。

    语法格式如下:

    java -cp <路径1;路径2;…> 全限定类名

    路径:依赖的文件所在的绝对路径(或相对路径),如果类文件在jar包中,路径后还要写上jar包的名字,例如“C:\users\gzn\mylib\algs4.jar”
    注意,“.”代表当前路径,即java命令运行时所在路径。

    可能出错情况三 :存在依赖外部jar包时,命令行运行java命令,classpath参数中只是添加了外部jar包路径,没有添加当前目录“.”,导致要运行的类文件找不到。

    或者,程序在IDE(eclipse、IDEA等)开发工具中可以运行,但是在命令行下不能运行,情况相同。

    在某篇高赞博文中,依然存在的问题
    在这里插入图片描述
    下面,通过问题在现的方式,讲解解决方法。
    项目简介:HelloWorld.java程序,位置“C:\Users\gzn\helloworld\com\gzn\demo”,依赖algs4.jar(位置C:\Users\gzn\helloworld)中的edu.princeton.cs.algs4.StdOut类,调用了该类的print函数,其API如下

    public class StdOut
    public static void print(String s); 打印输出指定的字符串

    HelloWorld.java

    package com.gzn.demo;
    import edu.princeton.cs.algs4.StdOut;
    
    public class HelloWorld {
    	public static void main(String args[]) {
    		StdOut.print("Hello World!");
    	}
    }
    

    项目结构如下图所示:
    在这里插入图片描述
    在命令行运行程序时,存在外部依赖,不仅要在-cp (或-classpath)中指明依赖的路径,还有把当前路径加进去。因为当你指定了-classpath参数后,环境变量失效,于是环境变量CLASSPATHY中设置的当前目录“.”也就不能用了。虚拟机类加载器加载类的路径只能在classpath类加载路径指明的位置中查找,如果路径中没有添加当前目录“.”,也就是当前要运行的类所在位置没有添加到类加载路径中,显然会查找不到类。解决方法如下图所示:
    在这里插入图片描述

    三、扩展知识

    1. JDK目录结构及环境变量介绍

    JDK目录介绍
    在这里插入图片描述

    初学者环境变量配置如下:

    变量名
    CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool.jar (注,jdk1.5后无需配置)
    JAVA_HOMED:\jdk8(JDK安装目录,视个人安装情况而定)
    Path%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

    Path为命令行工具指定命令的查找路径。命令的本质是可执行程序,设置后可以在命令行工具下运行java、javac、javah等常用的命令;
    JAVA_HOME 指定了JDK(Java开发工具包)路径。设置后,无论是编译还是运行程序,类加载器都会从相应的目录中加载需要的类库。如运行javac编译命令,会从”%JAVA_HOME%\lib\tool.jar”加载需要的类;通过java命令运行程序,会从“%JAVA_HOME%\jre\lib\rt.jar”加载程序依赖的类;Java虚拟机会从“%JAVA_HOME%\jre\lib\ext\”加载依赖的类。

    jdk中的函数库lib称为Java的标准库,指定了JAVA_HOME环境变量后就可以使用了,编译和运行会自动在相应位置查找依赖的类。而第三方库(如mysql-connector-java-5.1.40.jar)和用户自己定义的类库 在编译和运行时,需要在-cp类加载路径参数中指明库的位置。

    2. 为什么jdk1.5后不需要配置环境变量了?

    此部分内容参考自Java开发环境不再需要配置classpath!

    在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置classpath,但JDK1.5之后,JRE能自动搜索目录下类文件,并且加载dt.jar和tool.jar的类。

    The class path tells the JDK tools and applications where to find third-party and user-defined classes that are not extensions or part of the Java platform. See The Extension Mechanism at
    类路径告诉JDK工具和应用程序在哪里可以找到第三方和用户定义的类,这些类既不是Java平台的扩展,也不是Java平台的一部分。参见扩展机制

    If you upgrade from an earlier release of the JDK, then your startup settings might include CLASSPATH settings that are no longer needed. You should remove any settings that are not application-specific, such as classes.zip. Some third-party applications that use the Java Virtual Machine (JVM) can modify your CLASSPATH environment variable to include the libraries they use. Such settings can remain.

    如果您从JDK的早期版本升级,那么您的启动设置可能包括不再需要的类路径设置。您应该删除任何与应用程序无关的设置,比如classes.zip。一些使用Java虚拟机(JVM)的第三方应用程序可以修改类路径环境变量,以包含它们使用的库。这样的设置可以保留。

    You can change the class path by using the -classpath or -cp option of some Java commands when you call the JVM or other JDK tools or by using the CLASSPATH environment variable. See JDK Commands Class Path Options. Using the -classpath option is preferred over setting the CLASSPATH environment variable because you can set it individually for each application without affecting other applications and without other applications modifying its value. See CLASSPATH Environment Variable.

    在调用JVM或其他JDK工具时,可以使用一些Java命令的-classpath或-cp选项,或者使用CLASSPATH环境变量,来更改类路径。参见JDK命令类路径选项。使用-classpath选项优于设置CLASSPATH环境变量,因为您可以为每个应用程序单独设置它,而不影响其他应用程序,也不需要其他应用程序修改它的值。参见CLASSPATH环境变量。

    展开全文
  • Java 错误:找不到或无法加载主类

    千次阅读 2018-07-14 22:10:30
    无奈的是使用java指令一直报错说找不到或无法加载主类,折腾了一个多小时终于被我搞定了,故写下来决解的方法,供大家参考。(一)首先检查系统变量:(1)打开控制面板-》系统和安全-》系统-》高级系统设置-》环境...

        今天在学习Java的时候,要在dos下使用 java 、javac 。无奈的是使用java指令一直报错说找不到或无法加载主类,

    折腾了一个多小时终于被我搞定了,故写下来决解的方法,供大家参考。

    (一)首先检查系统变量:

    (1)打开控制面板-》系统和安全-》系统-》高级系统设置-》环境变量;

    (2)变量 classpath,目的是设置在哪里可以找到 .class文件。在最前面加上".;",主要是让java执行的时候在当前路径找

    .class文件。其他的路径就是你安装JAVA的路径,相应改一下就好了。

    比如,Java安装在 E:\JAVA,那么变量值那里改为 E\JAVA\lib\dt.jar;E:\JAVA\lib\tools.jar;

     

    (3)变量Path,这个是设置指令java,javac,可执行文件的位置。

    设置为Java安装路径下的bin文件夹路径,如下所示:


    (4)变量 JAVA_HOME,设置为JAVA安装路径,比如:


    (5)测试一下指令java javac 都可执行,那环境变量就没有问题了。

    按照上面的步骤检查一遍后,再执行一次看看,如果还是不行请继续看下去。

    (二)分析java代码:

    //:Test.java
    package javatest
    public class Test{
    	public static void main(String args[]){
    	    System.out.println("helo");
    	}
    }

    注意:Test.java文件名要跟 public class Test 类名一致,而且一定要有主方法 public static void main(String args[]){}。

    这个代码放在E:\javatest目录下,使用java指令时系统找不到.class,所以才会报错。因为java执行的时候会先从系

    统变量calsspath里面的路径去找.class文件。然而我们使用的这个路径E:\javatest\Test.class,环境变量里面没有。解决

    的办法是把"E:"加入到系统变量classpath中去或者把package javatest 注释掉。



    以上就是我今天的分享,希望能帮助到大家,有说的不好的请大家指正。


    展开全文
  • CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录 转载于:https://www.cnblogs.com/zwsblogs/p/11377922.html
  • 原因一:查看java代码 注意类名,大括号,间距等。文件名最好与类名相同,如类名是AAA,就另存文件名为AAA.java, public class HelloWorld { public static void main(String[] args) { System.out.println("Hello...
  • 1、在classpath的最前面要加一个本目录路径,用.表示,由于后面还有java的dt和tools两个路径,所以.后要加;进行分隔表示。   2、更为重要的是,在cmd下运行javac 和java的时候,必须在该java文件
  • 在CMD下用java命令出现“找不到或无法加载主类”问题
  • 上图 1.cd进入项目目录src 2.在src目录下进行编译 此处com\water\Water.java为...故而是找不到的 4.5网路上流行的简易方法是注释掉package,这么做当然也是可以,属于奇技淫巧,同样解决了对package的强制依赖造成的问题
  • 问题描述:javac EmployeeTest.java编译通过,java EmployeeTest 提示无法找到主类,其可能原因如下图所示,后续遇到再补充。 java运行无法找到主类三种原因 1:java 类名.class class需要加 2:java运行时...
  • 目录结构为: main函数在mygui/Test.java中,正确编译方法为,在src目录下执行如下命令可以正确执行。 javac mygui/Test.java java mygui.Test 如果在mygui目录下编译,则需要添加src目录为...找不到或无法...
  • Java 命令找不到或无法加载主类

    千次阅读 2017-11-08 02:38:55
    如果你有一个java类,如Dog,并且里面写有package ...你abc文件夹路径下执行,成功 C://go.jar 为引入的jar包,前面的是点加分号.; javac -cp .;C://go.jar Dog.java 执行成功 之后如果你执行 java -cp
  • java类运行时显示: “错误:找不到或无法加载主类” 2、解决方案 由于是在运行阶段出现的问题,那么可能是环境变量配置不当的问题,也可能是运行环境的问题。 如果是已经多次使用的环境及工具,别的工程可以正常...
  • Java Application, 报错 错误: 找不到或无法加载主类 xxx 原因是缺少生成的主类字节码文件 普通java项目字节码文件保存在bin文件夹。里面就是你项目类的字节码文件和资源生成文件 如果有主类字节码文件,而...
  • 通常出现这种问题有以下三种原因: 第一:环境变量配置不正确,配置环境变量时一定要将...第三:程序有问题,比如我之前直接在cmd下执行eclipse下的java文件,始终报“错误: 找不到或无法加载主类”这个异常,但是在ec
  • Java————错误:找不到或无法加载主类

    万次阅读 多人点赞 2018-08-01 17:45:03
    为什么找不到主类dictionary2_0???找不到是什么原因??? 1.可能是编译的时候后缀带了.class:把后缀去掉; 2.可能是因为你的java文件带了package包,但是你还在java文件所在目录运行:返回包的前一目录进行...
  • 今天写程序时遇到了Java程序报错:“找不到或无法加载主类”的解决方法 so 就开始 百度 google了好多办法但是对于我来说都不实用。 问题描述:一个java文件导入到一个包中,然后在class文件中加入了一张图片 ...
  • 错误: 找不到或无法加载主类(java)

    千次阅读 2020-03-27 21:46:28
    很多刚学java的同学基本上都遇到过这个问题,刚才我刚了一下idea中入口雷类的包的地址,就出现这个了。原因很简单,在此特做记录,希望能帮助到点开这个文章,遇到错误的你。
  • JAVA_HOME:D:\Java\jdk1.8.0_91 CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面有英文点号) Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 设置没问题。java -version测试,显示JDK版本...
  • 一直报错:找不到或无法加载主类 后来搜索了,提示编译在此类的所在目录,但是运行要退回到包的上一级目录下,例如: package com.example.demo.test; /** * @ProjectName demo * @ClassName Test * @...
  • 使用Windows自带cdm窗口运行Java提示错误: 1.检查当前进入的路径下是否包含class文件 ...一般通过IDE开发工具开发Java项目时,class和java文件会被分别生成不同目录,因此从cmd运行java程序时会找不...
  • 我用的是多module 按照网上的方法都成功,所以仅供参考
  • JAVA错误: 找不到或无法加载主类

    万次阅读 多人点赞 2016-11-05 22:44:35
    JAVA_HOME:D:\Java\jdk1.8.0_91 CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面有英文点号) Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 设置没问题。java -version测试,显示JDK版本...
  • vscode运行Java找不到或无法加载主类的解决方法 报错如下 错误: 找不到或无法加载主类 test2 原因: java.lang.ClassNotFoundException: test2 解决方式 在vscode左下角找到这个 单击选择清理工作空间 选择清理并...
  • 解决Eclipse找不到或无法加载主类问题

    万次阅读 多人点赞 2019-03-17 16:29:41
    以前在用eclipse的时候经常遇到"找不到或无法加载主类"这样的问题,遇到了就很头疼,总是误打误撞的搞好了.但不知道问题的根源在哪,于是问题再次出现的时候又不知道从何下手.今天无聊,打算彻底研究下问题是如何出现的....
  • IDEA 错误 找不到或无法加载主类(完美解决)

    万次阅读 多人点赞 2021-01-16 22:12:02
    今天在运行项目的时候突然出了这样一个错误:IDEA 错误 找不到或无法加载主类 问题报错 找不到或无法加载主类 CSDN 有大佬是这样解决的 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单—》Build—...
  • java 找不到或无法加载主类

    千次阅读 2017-02-10 22:40:51
    在CMD下执行“Java”命令时提示:java 找不到或无法加载主类这应该是有三种原因:1、java文件中没有"main"方法;2、java文件中使用了包名;3、执行命名所在的路径不对;java文件中使用了包名是比较麻烦的,解决方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,074
精华内容 9,629
关键字:

java找不到加载主类

java 订阅