classpath的作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件作用
myeclipse工程当中的.classpath 和.project文件什么作用?