java -Xmx128m -Dfile.encoding=gbk -cp ./;bin/;./*;lib/* com.qianlima.crawlOthers.Icp

REM
REM block end

cmd

自己就设想了几种情景的使用,结果居然真的不会用javac和java,弄了一个上午,终于把自己的这点问题解决。但是总还是伤心啊。一个已经开发了三年java程序的人啊。。。先来描述一下几种情况:1、单独的一个java主程序;2、带包的一个java主程序;3、同一个包的两个类,一个引用另一个;4、引用不同包的其它类。

1、单独的一个java主程序

public class Joeytang{

public static void main(String[] args)     {

System.out.println("I am JoeyTang.");

}

}

将命令行到该java文件同一目录;直接输入命令javac Joeytang.java则会在当前的文件夹下出现Joeytang.class类文件。如果想指定编译的同时将编译好的类文件放到一个文件夹下则可以使用-d指定路径。例如javac -d .\ Joeytang.java则是在当前目录下,javac -d ..\ Joeytang.java  在上一个文件夹,javac -d ..\ a Joeytang.java则是在上一个文件夹下的a文件夹下,但是一定要保证指定的文件路径存在。运行该类文件,首先保证该类是具有main方法的类。然后编译完以后,使用java -classpath .; Joeytang就可以运行了。我开始没有加-classpath选项,老是提示说找不到类。所以一定要记住在这里加入该选项。具体该选项的作用是说在运行时调用了外部的类或者包时在这里注明,即如果使用了a.jar则要加上-classpath .;a.jar其中前面的那个“.;”我理解成是把环境变量中配置的jar文件拿进来。

2、带包的一个java主程序

pakage my.friends

public class Joeytang{

public static void main(String[] args)     {

System.out.println("I am JoeyTang.");

} }  这里面将Joeytang放到了my.friends包里面 在编译的时候进入到Joeytang.java同一目录,使用和上面一样的javac命令,这时候会在同一目录创建类文件,但是如果想让编译的时候将包的结构也创建出来则可以使用-d选项,javac -d .\ Joeytang.java,这时候会在当前目录下自动根据包的结构形式创建文件目录,即创建my/friends/文件件,并将编译好的类文件放在friends文件夹下。 运行的时候使用java my.friends.Joeytang来运行。

3、同一个包的两个类Joeytang.java文件为

pakage my.friends

public class Joeytang{

public String toString(){  return "Joey"; } }

Sunnylu.java文件为

pakage my.friends

public class Sunnylu{

public static void main(String[] args)     {

Joeytang joey = new Joeytang();

System.out.println("I am Sunney."+joey+" is my friend.");        } }

这种情况中Sunnylu类引用了Joeytang所以必须先编译Joeytang按照第二种情况将Joeytang编译,此时开始编译Sunnylu,注意要使用javac -classpath .; -d .\ Sunnylu.java,此时加入了-classpath选项,我也不知道为什么,但是如果不加编译老是提示找不到Jeoytang这个(郁闷啊,就这个问题搞了一个上午)。 编译完以后,来运行Sunnylu也要加入-classpath选项,java -classpath .; my.friends.Sunnylu

4、引用不同包的其它类

Tom.java文件为

package my.partners;

public class Tom{

public String toString()      {               return "It's Tom";      }}

Sunnylu.java文件为

pakage my.friends

import my.friends.Tom;

public class Sunnylu{

public static void main(String[] args)     {

System.out.println( "I am Sunny.");

Tom tom = new Tom();

System.out.println(tom + " is my partner.");

Joeytang joey = new Joeytang();

System.out.println(joey + " is my friends.");       } }

这种情况首先把Joeytang编译了,然后编译Tom类,因为Tom为外部类所以在编译Sunnylu的时候一定要在-classpath注明Tom的路径例如如果我把Tom类编译到当前目录的上一级目录上去了,则编译Sunnylu时使用javac -classpath .;..\ -d .\ Jerry.java,此时编译时会到上一目录按照Tom的包结构来找Tom类。 运行时一样要加入这个选项。 好了写这么多希望跟我一样郁闷此问题的可以得到些帮助。

又看了一点记录一下注意点

1、classpath中的“.”。这个点的位置是说 你在执行java命令时指定的需要执行的java类,会在当前所在的文件夹路径下找这个类。classpath中定义的不同的路径也会有先后顺序,优先从前面定义的路径开始去找这个类。如果找到了,就不会再往下面找。现在才知道为什么叫classpath,因为是专门找class用的路径。呵呵。当然也可以在运行java的时候显性的指定classpath路径。

2、java命令时候,执行带包的类的时候,一定要用包.类的方式进行运行。否则无法运行的。而且注意还得能保证在classpath中能找到这个包\class类。例如我的类是这样的net.joey.AA,那么如果编译后的AA.clss文件在joey文件夹下,那么要想运行这个AA类,必须将dos路径放到net同级目录然后执行java net.joey.AA。否则无论如何也无法执行这个类了。

3、javac命令在执行带包的类时,可以将当前目录放到与包最上层同级。例如net.joey.AA类,我们可以把dos路径放到net同级,然后运行javac net/joey/AA.java这样会在joey文件夹下创建AA.class文件,同时这个时候在net同级,可以直接通过运行java net.joey.AA来运行执行结果。

javac和java的使用的更多相关文章

  1. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  2. windows命令行下简单使用javac、java、javap详细演示

    最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象. 如题,首先我们在桌面,开始->运行->键入 ...

  3. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  4. Java—javac Hello.java找不到文件

    刚开始编写Java代码时,会遇到很多困难,下面来说一个比较常见的错误,如下: 对于初学者,一般都是从Hello,World开始的学起的,废了好大劲儿,铜鼓了半天,终于要在DOS上运行javac Hel ...

  5. 解决javac和java命令在Mac OSX终端里的乱码问题

    转自:https://www.surfchen.org/archives/710 java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各 ...

  6. 如何用javac 和java 编译运行整个Java工程

    转自:http://blog.csdn.net/huagong_adu/article/details/6929817      前言:本文教你怎么用javac和Java命令,以及如何利用脚本(she ...

  7. Windows中将javac和java两个命令集成到UltraEdit工具栏

    1. 目的 将javac和java两个命令集成到UltraEdit工具栏,以方便在UltraEdit中编辑简单的java文件后,能够直接进行编译,运行. 2. 环境 UrtalEdit版本18.20: ...

  8. javac -cp java -cp

    ///////////////////////////////////////////////////////////////////////////////////// 编译java文件的命令都知道 ...

  9. eclipse 中添加自定义 classpath 的方法,以及 javac 和 java 的一些使用细节

    目标: 将 ~/java 加入classpath eclipse: 右键选中 Project, Properties, Java Build Path, Libraries, Add External ...

随机推荐

  1. 为树莓派添加一个强实时性前端[原创cnblogs.com/helesheng]

    树莓派是最近流行嵌入式平台,其自由的开源特性以及低廉的价格,吸引了来 自全球的大量极客和计算机大咖的关注.来自各大树莓派社区的幕后英雄,无私地在这个开源硬件平台上做了大量的工作,将其打造成了世界上通用 ...

  2. 【转】Excel-VBA操作文件四大方法之三

    三.利用FileSystemObject对象来处理文件 FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,具有大量的属性.方法和事件.其使用面向对象的“object. ...

  3. Mypwd 的解读与实现 20155202

    Mypwd 的解读与实现 20155202 linux下pwd命令的编写 实验要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd ...

  4. 微信小程序标签页切换

    WXML中: <view class="swiper-tab"> <view class="swiper-tab-list {{currentTab== ...

  5. windows phone 手机解锁失败问题

    1.使用 VS 2015  自带的  Windows Phone Developer Registration (8.1) 工具, 解锁手机. 总是提示 日期和时间错误. 解决办法,  有2个 1.打 ...

  6. win10 64位redis的安装和测试

    步骤记录: 1.官网没有redis64位的版本,在git开源项目上找到64位的可用版本 https://www.cnblogs.com/tommy-huang/p/6093813.html 这里有下载 ...

  7. 【转载】OGRE 2.1 Windows 编译

    OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE: OGRE官方推出了最新 ...

  8. rsync + inotify 数据实时同步

    一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...

  9. ffmpeg 压缩H265 Windows 硬件编码

    硬件NVIDIA:ffmpeg.exe -i input.avi -c:v hevc_nvenc -preset:v fast output.mp4 软件          :ffmpeg.exe - ...

  10. unittest,requests——接口测试脚本及报告

    用unittest管理两个利用requests模块,做百度搜索的简单接口测试用例,之后自动输出报告 # encoding=utf-8import requests,unittest,HTMLTestR ...