我正在读这一行:
format()方法做的第一件事是从名为output的类路径加载Velocity模板。虚拟机
请解释在这个上下文中类路径的含义,以及我应该如何设置类路径。
类路径是Java虚拟机在Java程序中查找用户定义的类、包和资源的路径。
在此上下文中,format()
方法从该路径加载模板文件。
把它想象成Java对PATH环境变量的回答——操作系统在PATH上搜索EXE,Java在类路径上搜索类和包。
当用Java编程时,通过在源文件的顶部放置类似的内容,可以使正在编写的类可以使用其他类:
import org.javaguy.coolframework.MyClass;
或者有时你会说“批量进口”东西:
import org.javaguy.coolframework.*;
所以在你的节目中,当你说:
MyClass mine = new MyClass();
Java虚拟机将知道在哪里可以找到已编译的类。
让VM查看计算机上的每个文件夹是不切实际的,所以您必须向VM提供一个要查看的位置列表。这是通过将文件夹和jar文件放在类路径上来实现的。
在我们讨论如何设置类路径之前,让我们先讨论一下。类文件、包和。jar文件。
首先,让我们假设MyClass是您作为项目的一部分构建的,它位于项目中名为out
的目录中。. class文件将位于out/org/javaguy/coolFramework/MyClass.class
(以及该包中的所有其他文件)。为了访问该文件,您的路径只需包含文件夹“输出”,而不是整个包结构,因为您的导入语句将向虚拟机提供所有这些信息。
现在让我们假设您将CoolFramework捆绑到一个。jar文件,并将其放入CoolFramework。将jar放入项目中的lib目录中。现在需要将lib/CoolFramework放在。jar
进入你的类路径。VM将在jar文件中查找org/javaguy/coolframework
部分,并找到您的类。
因此,类路径包含:
如何设置类路径?
每个人似乎学习的第一种方式是使用环境变量。在unix机器上,可以这样说:
export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/
在Windows计算机上,您必须转到环境设置,添加或修改已有的值。
第二种方法是在启动Java时使用-cp
参数,如下所示:
java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/" MyMainClass
第三种方法通常是使用. sh
或. bat
文件来计算类路径,并通过-cp
参数将其传递给Java。
以上这些都有一个“妙招”。在大多数系统(Linux、Mac OS、UNIX等)上,冒号字符(“:”)是类路径分隔符。在windowsm中,分隔符是分号(“;”)
那么最好的方法是什么呢?
通过环境变量全局设置东西是不好的,通常是因为与全局变量不好相同的原因。您更改了CLASSPATH
环境变量,这样一个程序就可以工作,最终您会破坏另一个程序。
-cp
是一条路要走。我通常会确保我的类路径
环境变量是一个空字符串,只要有可能,因此,我避免了全局类路径问题(不过,当全局类路径为空时,一些工具并不高兴——我知道两个常见的、价值数千美元的、获得许可的J2EE和Java服务器的命令行工具存在这种问题)。
问题内容: 我只是在读这行: format()方法要做的第一件事是从名为output.vm的类路径中加载Velocity模板 请解释在这种情况下类路径的含义,以及如何设置类路径。 问题答案: 使用Java进行编程时,可以通过在源文件的顶部放置类似的代码来使其他类对正在编写的类可用: 或者有时你通过说“批量导入”内容: 因此,稍后在你的程序中你说: Java虚拟机将知道在哪里可以找到你的已编译类。
问题内容: 想知道不指定classpath选项时默认的classpath是什么吗? 问题答案: 当前的工作目录()。 从Java™教程中:PATH和CLASSPATH: 类路径 的 默认值为“。” ,表示仅搜索当前目录。指定CLASSPATH变量或-cp命令行开关将覆盖此值。 这包括子目录吗? 不,在类路径中没有条目是“递归的”。您必须明确列出每个子目录(或jar)。但是,如果您有一个表示clas
问题内容: 好吧,我很困惑。我的SQL Server JAR在这里: 我的类路径已设置: 它是JDBC 4.0驱动程序,因此我不需要这样做,但是我尝试设置类名。 我仍然执行我的程序,但出现错误: 万一有问题,我正在运行Windows 8.1。我已经尝试过以管理员身份或不以管理员身份使用命令提示符。 Java信息: 有任何想法吗? SQL Server是SQL Server Express 2012
当程序运行时,变量是保存数据的好方法,但变量、序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。 Python 提供了内置的文件对象,以及对文件、目录进行操作的内置模块,通过这些技术可以很方便地将数据保存到文件(如文本文件等)中。 关于文件,它有两个关键属性,分别是“文件名”和“路径”。其中,文件名指的是为每个文件设定的名称,而路径则用
使用指南 - 统计设置 - 转化设置 - 什么是转化路径 路径是指访客为到达您所设定的目标页面必须依次经过的中间页面。 >例如,网站注册通常会包含以下几个步骤: 步骤1:阅读网站相关协议; 步骤2:填写注册基本信息; 步骤3:提交注册信息; 目标页面:注册成功页面。 当注册信息成功提交后,网站通常会显示注册成功页面。 如果您将注册成功页面设置为目标页面,则可以将步骤1、步骤2和步骤3显示的页面均设
问题内容: 我有很多jar文件要添加到我的类路径中,因此,每次编译Java文件时,都会得到如下命令: 我尝试使用: 然后: 但是根本没有添加jar:由于缺少jar,我得到了错误信息…谢谢 问题答案: 也许您想尝试使用Maven来构建您的应用程序?它真的很容易设置,并且消除了依赖管理的所有问题。 同样从Java 6开始,您可以在类路径中使用通配符: set CLASSPATH = my_libs \