当前位置:  技术问答>java相关

在线谈谈:classpath 再讨论(简直是恶梦!!!)

    来源: 互联网  发布时间:2015-11-02

    本文导语:  我学java一个星期了,什么继承,接口,内隐看了一大堆,觉得java果然没白学,比vc好学多了,可我毕竟还是java菜鸟,前辈们关于“classpath"设置的问题我都看了,请问,classpath  的设置对于“使用package”与“不用pack...

我学java一个星期了,什么继承,接口,内隐看了一大堆,觉得java果然没白学,比vc好学多了,可我毕竟还是java菜鸟,前辈们关于“classpath"设置的问题我都看了,请问,classpath  的设置对于“使用package”与“不用package”的情况影响是一样的吗??我的情况是:  
     在目录“d:MyJv"下,不带包的class编译、运行良好;而带包的class我还没运行成功过依次,一个星期下来,我已经对package产生恐惧感了,晚上做恶梦的时候都有梦到。  
     例如:  
文件1:  
//:d:MyJvP1Egg.java  
 
package  P1;//也试过  package  MyJv.P1;  
 
public  interface  Egg{  
       void  eatEgg();  
}  
///:~  
 
文件2:  
//:d:MyJvP2BigEgg.java  
 
package  P2;//本来是  package  MyJv.P2;  

import P1.Egg;//也试过 import P1;//import MyJv.P1.*;
 
public  class  BigEgg  implements  Egg{  
       void  eatEgg(){  System.out.println("Eating...");  }  
         
       public  static  void  main(String[]  args){  
             BigEgg  be  =  new  BigEgg();  
             be.eatEgg();  
       }                  
}  
///:~  
 
编译、运行过程如下:  
d:MyJv>javac  -d  P2.BigEgg.java  //编译ok了:)
   
d:MyJv>java  P2.BigEgg  
Exception  in  thread  "main"  java.lang.NoClassDefFoundError:P2/BigEgg(wrong  name  MyJvP2BigEgg)......... 
 :(  
 
 
package  恶梦啊!!!!

|
粘贴一下收集的:

通常,我们需要设置三个环境变量:JAVA_HOME、PATH  和  CLASSPATH。
  
          JAVA_HOME:该环境变量的值就是  Java  所在的目录,一些  Java  版的软件和一些  Java  的工具需要用到该变量,设置  PATH  和  CLASSPATH  的时候,也可以使用该变量以方便设置。
  
          PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找  PATH  中的每一个路径,直至找到。或者找完  PATH  中的路径也不能找到,则报错。Java  的编译命令  (javac),执行命令  (java)  和一些工具命令  (javadoc,  jdb  等)  都在其安装路径下的  bin  目录中。因此我们应该将该路径添加到  PATH  变量中。
  
          CLASSPATH:也指定一个路径列表,是用于搜索  Java  编译或者运行时需要用到的类。在  CLASSPATH  列表中除了可以包含路径外,还可以包含  .jar  文件。Java  查找类时会把这个  .jar  文件当作一个目录来进行查找。通常,我们需要把  JDK  安装路径下的  jrelibrt.jar  (Linux:  jre/lib/rt.jar)  包含在  CLASSPATH  中。
  
          PATH  和  CLASSPATH  都指定路径列表,列表中的各项  (即各个路径)  之间使用分隔符分隔。在  Windows  下,分隔符是分号  (;),而在  Linux  下,分隔符是冒号  (:)。
  
          下面分别说明三个环境变量在  Windows  和  Linux  下如何设置,不过在此之前,我们需要做个假设。假设  JDK  在  Windows  下的安装路径是  C:jdk,在  Linux  下的安装路径是  /usr/local/jdk/。那么,安装后的  JDK  至少会包括如下内容:
  
                  C:jdk  (/usr/local/jdk)
                      |--  bin
                      |--  demo
                      |--  include
                      |--  jre
                      |      |--  bin
                      |      `--  lib
                      `--  lib
  
  *****    在  Windows  下设置
  
          Windows  下使用  set  命令设置环境变量,为了使每一次启动计算机都设置这些环境变量,应该在系统盘根目录下的  autoexec.bat  文件中进行设置,如:
  
                  set  JAVA_HOME=C:jdk
                  set  PATH=%JAVA_HOME%bin;C:Windows;C:WindowsCommand
                  set  CLASSPATH=%JAVA_HOME%jrelibrt.jar;.
  
          有些版本的  Windows  不能用  %变量名%  来替换环境变量的内容,那么就只好直接写  C:jdk  而不是  %JAVA_HOME%  了。另外,C:Windows  和  C:WindowsCommand  是  Windows  会自动加入路径的,所以可以从设置中去掉。如果在  autoexec.bat  中已经设置了  PATH,那只需要将  %JAVA_HOME%bin  加到原来设置  PATH  的那条语句中就行了。
  
          CLASSPATH  也可以根据需要设置或者加入其它的路径,比如你想把自己写的一些类放在  C:java  中,就可以把  C:java  也添加到  CLASSPATH  中去,set  CLASSPATH=%JAVA_HOME%jrelibrt.jar;C:java;.。
  
          注意,在  CLASSPATH  中包含了一个“当前目录  (.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的  Java  程序,即使该路径并未包含在  CLASSPATH  中也可以。原因很简单:虽然没有明确的把该路径包含在  CLASSPATH  中,但  CLASSPATH  中的  “.”  在此时就代表了该路径,如:
  
          假设在  C:java  目录下有可运行的类  HelloJava.class,那么
  
                  C:>  set  CLASSPATH=C:jdkjrelibrt.jar;.      //  设置  CLASSPATH  环境变量,注意最后有一个  “.”
                  C:>  cd  java                                                                  //  转到  C:java  目录
                  C:java>  java  HelloJava                                            //  运行  HelloJava
                  Hello,  Java.                                                                //  运行结果
                  C:java>  _
  
          该例将在  1.3.3  节中分析。
  
  ****  在  Linux  下设置
  
          Linux  下使用“变量名=变量值”设置变量,并使用  export  命令将其导出为环境变量。为了使每一次登录都自动设置好这些变量,你需要在  ~/.bash_profile  里或者  ~./bashrc  里进行设置,如
  
                  export  JAVA_HOME=/usr/local/jdk
                  export  PATH=$JAVA_HOME/bin:$PATH
                  export  CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.
  
          设置  PATH  时用的  $JAVA_HOME  是指替换变量  JAVA_HOME  的值到  $JAVA_HOME  所在位置。如上句实际就是  export  PATH=/usr/local/jdk/bin:$PATH。这句中  $PATH  也是同样的作用,不过这里的  PATH  是指以前设置的  PATH  变量的值,而非本次设置  PATH  变量的值。
  
          注意,在  CLASSPATH  中包含了一个“当前目录  (.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的  Java  程序,即使该路径并未包含在  CLASSPATH  中也可以。原因很简单:虽然没有明确的把该路径包含在  CLASSPATH  中,但  CLASSPATH  中的  “.”  在此时就代表了该路径,例如
  
          假设在  /home/fancy/java  目录下有可运行的类  HelloJava.class,那么
  
                  [fancy@matrix  fancy]$  export  CLASSPATH=/usr/local/jdk/jre/lib/rt.jar:.    //  设置  CLASSPATH,注意最后的“.”
                  [fancy@matrix  fancy]$  cd  ~/java                                                                                  //  转到  /home/fancy/java
                  [fancy@matrix  java]$  pwd                                                                                                //  显示当前目录
                  /home/fancy/java                                                                                                                //  当前目录是  /home/fancy/java
                  [fancy@matrix  java]$  java  HelloJava                                                                          //  运行  HelloJava
                  Hello,  Java                                                                                                                          //  运行结果
                  [fancy@matrix  java]$  _
  
          该例将在  1.3.3  节中分析
  
  *****    实例分析
  
          1.3.1  节和  1.3.2  节中的用到的实际上是一样的例子,只是操作系统不同,略有差别。
  
          两个例子都提到一个“可运行的类”,它是指包含了  public  static  void  main(String[]  args)  方法的类,这将在下一章  HelloJava  一节中详述。例中的  CLASSPATH  均未包含  HelloJava.class  所在的目录(C:java,  /home/fancy/java),但是均包含了当前目录  (.)。因此转到包含  HelloJava.class  的目录下去执行  java  HelloJava,在  Java  寻找到  CLASSPATH  中的“.  (当前目录,C:java,  /home/fancy/java)”时,找到了  HelloJava.class,运行成功。




|
其实就是在classpath中加一个  .  的问题。你试了吗。别告诉我你不知道。

|
package com.cn;
public class aaa 
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}
保存在c;aa目录下。然后

C:aa>javac -d c:aa aaa.java

C:aa>java com.cn.aaa
Hello World!



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于Html5的mockups在线工具简介
  • 装MYSQL后启动错误! mysqld ended --在线急等!在线急等!在线急等!在线急等!-----
  • MyEclipse SVN插件SubEclipse 在线离线等几种安装方式介绍
  • 智能在线表单设计器 FreeForm智能在线表单设计器
  • Linux使用群24032501,保持20人在线,目标50人在线
  • 简单的输入输出问题 在线等待 在线给分
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在线求教, 为什么不能开始除root之外的用户登录??...很急, 在线等
  • 在线等,在线给分!(简单问题,急)
  • 我需要唯一用户在线,不能两个用户同时在线的JSP实现的设计文档
  • 在线等,在线给分!!!!!!!!!!
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?
  • 在线等几个简单问题解答,答出一个在线加50分。
  • 在线解压压缩 PclZip
  • 在线支持系统 CSLH
  • 在线视频编辑工具 Kaltura
  • 非常急,请问如何用JSP实现在线人数统计
  • 手机在线收音机 MFRadio
  • 在线客服系统 PHP Live!
  • 在线考试系统 TCExam


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3