java找不到或无法加载主类XXX
java 找不到或无法加载主类XXX
使用命令行运行Java文件时,有时会提示错误“找不到或无法加载主类XXX”,这里涉及到三个可能的原因:
(1)java是环境变量JA V A_HOME、CLASSPATH、Path没有正确配置。
(2)命令行所在目录和Java文件所在目录不同。
(3)定义了包名的类,需要特殊处理
1.原因(1)的解决方法
在网上有很多配置Java环境变量的解决方法,原理都是一样的,这里就不再详述;2.原因(2)的解决方法
当命令行所在目录和Java文件所在目录不同时,一定要给出Java文件的完整路径名称!
例如:在D盘根目录下编写一个Hello.java文件,那么Hello.java的完整路径名称为D:\Hello.java。
1.打开命令行,执行javac Hello.java,报错“javac:找不到文件:Hello.java”,这是因为命令行的目录为C:\Users\Administrator,与Hello.java的目录不同,命令行javac从它的当前目录找不到Hello.java。
2.将命令行切换到D盘根目录下,执行javac Hello.java,此时没有报错,说明编译成功,然后再执行java Hello,程序成功运行。当Java文件和命令行在同一目录下时,直接输入Java文件名称,即可成功运行。
3.那么如何在不同的目录下成功运行Java文件呢?解决方法:当Java文件和命令行在不同目录时,编译时输入Java文件的完整路径名称;执行时,因为classpath指定了Java 类的执行路径,Java类只有包含在classpath路径下才能被java命令识别,有如下两种方法:(1)通过set classpath命令设置Java类的临时执行路径
(2)在系统环境变量classpath后面加上;d:;,表示搜索Java类时会从d盘目录搜索
需要注意classpath在编译时是不起作用的,所以在目录不同时,无论有没有配置classpath路径,javac命令后面都要输入Java文件的完整路径名称。
3.原因(3)的解决方法
当类的定义中包含包时,例如类Hello定义了包:package duomu.demo;包实际上就是文件夹,定义包就是将Hello.java文件放入duomu\demo目录下,然后通过命令行编译Hello.java文件时需要将命令行目录切换到Hello.java所在的目录,而执行Hello.class文件时,需要将命令行目录切换到Hello类所属包duomu\demo的上级目录,方可运行成功;否则会提示“找不到或无法加载主类Copy”
北大青鸟推荐:Java精选笔试题(含答案解析)
北大青鸟推荐:Java精选笔试题(含答案解析)如果你是计算机专业出生,但是还没有找到工作的话,你就得补补技术了,一些关于面试、笔试的题要多刷一刷。有可能你知道答案,但是由于语言组织能力有所欠缺,所以面试官的印象不是很好,下面分享一些Java精选的鄙视题,希望对面试这者有帮助。 1,volatile关键字是否能保证线程安全?() 答案:否 volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对volatile的写操作,无法保证线程安全。 假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值,在线程1对count进行修改之后,会write到主内存中,主内存中的count变量就会变为6;线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6;导致两个线程及时volatile关键字修改之后,还是会存在并发的情况。 2,下面哪个流类属于面向字符的输入流( ) A、BufferedWriter B、FileInputStream C、ObjectInputStream D、InputStreamReader 答案:D Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。
面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。 面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。 3,Java能不能不通过构造函数创建对象() A、能 B、不能 答案:A Java创建对象的几种方式: (1) 用new语句创建对象,这是最常见的创建对象的方法。 (2) 运用反射手段,调用https://www.360docs.net/doc/4717924990.html,ng.Class或者https://www.360docs.net/doc/4717924990.html,ng.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法。 (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。 (1)和(2)都会明确的显式的调用构造函数;(3)是在内存上对已有对象的影印,所以不会调用构造函数;(4)是从文件中还原类的对象,也不会调用构造函数。 4,下列哪个叙述是正确的() A.子类继承父类的构造方法。 B.abstract类的子类必须是非abstract类。 C.子类继承的方法只能操作子类继承和隐藏的成员变量。 D.子类重写或新增的方法也能直接操作被子类隐藏的成员变量。 答案:C 子类是不继承父类的构造方法的,而是必须调用其父类的构造方法。
工具类产品UI设计的8个准则
学IT技能上我学院网https://www.360docs.net/doc/4717924990.html, 工具类产品UI设计的8个准则 之前阅读了原研哉大神《设计中的设计》一书,书中提到了一个很有意思的概念:再设计。再设计的理论,是想让我们通过忘掉设计对象已有的现状,追根溯源,对设计对象进行再次设计,从而加深大家对设计对象的理解。 所以我重新审视了之前文章中提出的工具类产品的三个特点:效率、智能、个性化,发 现仅仅是这3个词语,概括性太强,却很难细节的提出我们队工具类产品的期望,所以结 合个人的理解,我对这三个对象进行了重新分析和细化,总结出来的8个词汇来形容这一 类产品的UI设计方向: 简洁的 快速的 正确的 易理解的 美观的 主动的
学IT技能上我学院网https://www.360docs.net/doc/4717924990.html, 个性化的 引导性强的 8个形容词 简洁的 在这类产品中,个人认为没有绝对意义的简洁,如果我们期望得到一个带有留白之美的页面,这种期望很可能会受到打击..... 在设计过程中,我曾经不止一次的希望将众多的操作做归纳整理,或者收起来,或者直接减掉,然而从用户反馈过来的情况来看,精简之后的效果反而增加了系统的答疑量,这里面当然也存在着一些对用户操作的判断失误,但背后却反馈出一个问题:这类产品的用户,对于操作的定位,有着最高优先级的要求,这也就是为什么即便我们的产品页面已经很复杂,但仍然需要支持这些功能在首屏显示的原因。 如何做到真正的简洁? 我个人认为简洁可以从以下几个方面入手: 导航的简洁,导航的简洁意味着用户可以快速的理解产品的各部分功能,当然,这对产品的架构有着比较高的要求,我们需要明确的划分产品中的各个子系统以及子系统之间的优先关系。尽量用最合理的层次来引导用户使用。 视觉层次的简洁,当页面信息繁杂时,我们很多时候是依托于视觉的处理来让用户清晰的分辨出各部分区域,所谓视觉层次的简洁,就是尽量用最少的视觉分层,给用户植入分区的感觉,避免视觉效果的大量使用而导致页面更加复杂。
Java API 试题
永隆 JAVA笔试题 一、选择题 1、关于Java 类的加载过程,下面哪些描述是正确的() A、在 Java 中,有四种类型的类加载器:BootStrapClassLoader、ExtClassLoader、AppClassLoader 以及用户自定义的ClassLoader。//Extension ClassLoader, System ClassLoader+用户自定义的classloader B、使用 new 关键字创建类实例时,其实就显示地包含了类的加载过程 C、在 Java 中,类的实例化流程分为两个部分:类的加载和类的实例化。类的加载又分为显式加载和隐式加载。 D、Class.forName 来加载类时,是通过 ExtClassLoader进行加载的。 //system classLoader 加载 2、关于HashMap的实现机制,下面哪些描述是正确的() A、HashMap中key-value 当成一个整体进行处理,系统总是根据数组的坐标来获得key-value 的存储位置。//没有存储顺序,无下标之说! B、HashMap基于哈希表的 Map 接口的实现,允许使用 null 值和 null 键。 C、如果HashMap中,如果Key的hash相同的话,HashMap将会出错。//会替换相应的value D、HashMap每次容量的扩增都是以2的倍数来增加。//大约获得2倍的桶数! 3、下面的代码执行输出正确的是() 1. public class test( 2. public int aMethod()[ 3. static int i=0; 4. i++; 5. return I; 6. ) 7. public static void main (String args[]){ 8. test test = new test(); 9. test.aMethod(); 10.int j = test.aMethod(); 11.System.out.printIn(j); 12.] 13.} A. 编译错误 B. 编译成功,打印出是“0” C. 编译成功,打印出是“1” D. 编译成功,打印出是“2” A 4、如何获取下面表单 select