zoukankan      html  css  js  c++  java
  • 使用javac编译java文件

    过程中遇到的几个问题记录如下:

    1.java -version正常显示java版本,但是javac却显示【不是内部外部命令】

    原因:JAVA_HOME设置成了用户环境变量,Path里用%JAVA_HOME%时没有正确解释出来,在cmd里echo %Path%就能看出来了。

    解决方法:不用JAVA_HOME,直接在Path里添加绝对路径,到bin为止。

    2. 如果程序中声明了包名,即首行写了package com.xxx;

      那么如果按照一般的编译方式 javac 源文件名.java

      会在当前目录下生成class文件。

      然后直接用:java源文件名执行,则会报错。

      出现java.lang.NoClassDefFoundError

    产生问题的原因

      包的意义在于产生一种目录结构,所以class文件必须位于相应的目录层次结构中。

      以package com.xxx为例:

      一种解决方式是手工建立com文件夹,里面建立xxx文件夹,把生成的class文件放在目录结构中,并且执行的时候采用java 完整类名(即带上包名)才能够执行

    不需要手动建立文件夹的解决手段

      使用编译参数 -d的解决方法:

      编译的时候可以在javac命令中采用-d指定存放生成的类文件的位置

      -d . 可以在当前目录下生成。

      用如下命令:

      javac –d . 源文件名.java

      则编译后在当前目录下,编译器会生成包的文件目录层次结构,并且把class文件放入其中。

      如果不用“.”,也可以指定目录。

      用java命令执行的时候需要将包的信息全部带上,即用完整的加包名的形式执行。

      执行:

      java 完整类名

    3.import的时候,如果要引入整个包,需要用【.*】,如果不这样,则一定要具体到引用包里的哪个类。只是【import 包名】是不对的。

  • 相关阅读:
    干货!常见的SQL面试题:经典50例!
    图解SQL基础知识,小白也能看懂的SQL文章!
    30多个Java实战项目,全部在这里了。
    Spring的@PropertySource注解使用
    20201226[java]两数相加
    1013.表-约束-唯一、主键、外键和排他
    1012.表-约束-检查
    1011.表-生成列
    1010.表默认值
    1009.表基础-初识表
  • 原文地址:https://www.cnblogs.com/johnsblog/p/4162492.html
Copyright © 2011-2022 走看看