classpath的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了classpath的作用相关的知识,希望对你有一定的参考价值。

关于classpath作用的理论知识看了不少 至今还没有完全理解他的作用
谁能给我举个实际的例子 让我比较一下:一个程序设置了classpath的情况下可以云运行,如果没设置classpath就不能运行。
通过比较我应该能理解classpath的作用
(到处复制别人回答的同学 省一下力气)

CLASSPATH是什么?它的作用是什么?
它是javac编译器的一个环境变量。
它的作用与import、package关键字有关。
当写下improt java.util.*时,编译器面对import关键字时,就知道要引入java.util这个package中的类;但是编译器如何知道把这个package放在哪里了呢?所以首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦 :) 如果java.util这个package在c:\jdk\ 目录下,得把c:\jdk\这个路径设置到CLASSPATH中去!当编译器面对import java.util.*这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java\util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!
CLASSPATH有点像c\c++编译器中的INCLUDE路径的设置哦,是不是?当c\c++编译器遇到include <iostream>这样的语句,它是如何运作的?搜索INCLUDE路径,检视文件!
当自己开发一个package时,然后想要用这个package中的类;自然,也得把这个package所在的目录设置到CLASSPATH中去!
CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。在安装之后,即使完全没有设定CLASSPATH,仍然能够编译基本的JAVA程序,并且加以执行。
参考技术A classpath的作用就是为你的java编译系统指名所引入的外边的类的路径,这样它才可以找到那些类呀.这个道理其实挺简单的,不过要是深入的话我还真是不太清楚,据说有好几个地方是java编译器要去找的,我记不太清了,不好意思. 参考技术B 首先说一下我也是学java的。classpath的作用就是把环境加入,然后你的编译器去寻找对应的运行环境。比如".;C:\ProgramFiles\Java\jdk1.5.0_07\bin\tools.jar;C:\ProgramFiles\Java\jdk1.5.0_07\bin\dt.jar"等就是相关的环境你的.class文件运行的方式就在里面了。这也是你的.class文件在没装相关环境下不能运行的原因了! 参考技术C classpath就是指定一个路径,这个路径就是你运行程序所需要的class文件

因为java的类库和其他的东西都是需要类库支持的

我们就是运行一个简单的hello word程序,也需要继承Object类,这个类是java.lang包下面

我们的classpath就是指定了一个这样的包所在的位置~~~
参考技术D classpath是系统在哪里找.class文件,如果没classpath,在运行时就要在java 绝对路径的文件名.class。
但是你设置了classpath,系统就先在classpath设置的路径去找.class文件。其中classpath中有个点(.),意思是在当前目录找。

java项目中.classpath,.settings,.project,mymetadata文件的作用

今天犯了一个错误,误修改了本地的.classpath文件,导致项目好多地方报错,之前也没有仔细的研究过项目中的一些生成文件的作用。

今天特此进行记录。

不管我们在eclipse中新建任何的Java项目或者web项目。都会在该项目的的位置下同时生成.seetings .classpath .project 这三个文件。

.settings 文件里面存放各种插件的配置文件。这个文件是eclipse查看js文件的时候用的,记录了用什么编码方式查看。与发布无关。.settings\文件夹不会被打到.war包里。
.project是项目文件,即工程构建配置文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置
.classpath的位置定义了你这个项目在编译时所使用的$CLASSPATH,即项目所用的外部引用包的路径。系统的环境变量,VM加载类的时候要按这个路径下去找,

.mymetadata 保存的是工程属性文件

 

************:

1..classpath文件可以从同类型的项目中直接拷贝,

2.在项目发包的时候,会看不到.classpath,.settings , .project文件等,是因为在项目发包的过程中,已经经过编译,将其加载到ServiceContants中。

 

 

在一个项目中点刷新的目的是为了更新.project文件中的文件清单,让你把不通过eclipse提交到项目的文件显示出来

 

.classpath 文件

<?xml version=”1.0” encoding=”UTF-8”?>

<classpath>

    <classpathentry kind=”src” path=”src/java”/>

    <classpathentry kind=”src” output=”target/test-classes” path=”src/test”/>

    <classpathentry kind=”con” path=”org.eclipse.jdt.launching.JRE_CONTAINER”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/activation/jars/activation-1.0.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/mvc/jars/mvc-1.0.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/ehcache/jars/ehcache-1.0.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/CodeManager/jars/CodeManager-1.0.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/jetspeed/jars/jetspeed-1.4.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/dwr/jars/dwr-1.1.1.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/servletapi/jars/servletapi-2.4.jar”/>

    <classpathentry kind=”var” path=”MAVEN_REPO/jspapi/jars/jsp-api-2.0.jar”/>

    <classpathentry kind=”lib” path=”D:/workspace/repository/junit/jars/junit-3.8.1.jar”/>

    <classpathentry kind=”output” path=”target/classes”/>

</classpath>

1、src是源文件具体目的地;
2、output是类文件输出目的的;
3、con是eclipse运行时所需的核心包;
4、var是通过环境变量的形式增加的一些 JAR包;
5、lib是直接加入的JAR包;
所以需要加入一些第三方的JAR文件时,直接编辑此文件即可,eclipse不需重启,工程即可生效;因为实质上这个文件就是配置整个工程的运行环境。

 

.project 文件

  <?xml version="1.0" encoding="UTF-8"?>
< projectDescription>
    <name>CreateInterpret</name>
    <comment>JavaCC [email protected] 32303037303632392D3130303020437265617465496E746572707265742F777063 </comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>sf.eclipse.javacc.javaccbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>sf.eclipse.javacc.javaccnature</nature>
    </natures>
< /projectDescription>

1、工程名<name></name>
2、工程注释描述<comment></comment>
3、运行时需要的额外Eclipse插件<natures></natures>,及其具体加载方式信息<buildSpec></buildSpec>
4、链接工程外部的资源<linkedResources></linkedResources>,链接后可以看做是在本工程的资源来使用,但并不在本地创建相应的资源。
<name>JavaSrc</name>为本工程显示的资源名称;
<type>2</type>资源类型(1–文件,2–目录。貌似除了1表示文件,x.x形式的带小数点的都表示文件,无论小数点后有几位和小数点前的数有多大);
<location>D:/workspace/study/petstore/src</location>为工程外部链接的资源。

 

可参考:https://yq.aliyun.com/articles/2597

http://183.207.103.93/IMP/resManage/playerRecord

 














以上是关于classpath的作用的主要内容,如果未能解决你的问题,请参考以下文章

eclipse中的.project 和 .classpath文件的具体作用

Eclipse 工程目录下的.classpath.project文件和.settings文件作用

ClassPath

myeclipse工程当中的.classpath 和.project文件什么作用?

eclipse工程当中的.classpath 和.project文件什么作用?

环境变量 classpath 的作用是啥?