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 包名】是不对的。

  • 相关阅读:
    3_数据类型
    2_十进制与二进制的互相转换
    1_初识Java
    Jedis 常用API
    Eazfuscator.net 2020 IL级指令虚拟化保护(Virtualization)机制分析
    C#实现——十大排序算法之选择排序
    Flutter 开发从 0 到 1(三)布局与 ListView
    使用 .NET 进行游戏开发
    Metasploit简单使用——后渗透阶段
    ElasticSearch 索引 VS MySQL 索引
  • 原文地址:https://www.cnblogs.com/johnsblog/p/4162492.html
Copyright © 2011-2022 走看看