如何设置类路径参数

发布于 2024-11-05 03:27:17 字数 226 浏览 5 评论 0原文

要启动测试,我必须设置一个大的 jar 文件列表作为类路径的参数: -类路径 a.var;b.jar;.... - 还有其他方法来指定库吗? 例如是否可以将文件设置为参数并且该文件包含所有库的路径 例子 : -类路径myFile.txt 并且 myFile.txt 包含 ../a.jar ../b.jar ..等

谢谢,

to launch tests , I have to set a big list of jar files as arguments for classpath :
-classpath a.var;b.jar;....
- Is there an other way to specify libraries ?
for example is it possible to set file as arguments and the file contains path to all libraries
example :
-classpath myFile.txt
and myFile.txt contains ../a.jar
../b.jar
.. etc

thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

灼疼热情 2024-11-12 03:27:21

为了午餐测试我强烈建议你使用Ant。

Ant 有 元素,它允许您指定“给定目录中的所有 jar”:

<classpath>
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
  <dirset dir="${build.dir}">
    <include name="apps/**/classes"/>
    <exclude name="apps/**/*Test*"/>
  </dirset>
  <filelist refid="third-party_jars"/>
</classpath>

To lunch tests I strongly suggest you to use Ant.

And Ant has <classpath> element, which allows you to specify "all jars within given directory":

<classpath>
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
  <dirset dir="${build.dir}">
    <include name="apps/**/classes"/>
    <exclude name="apps/**/*Test*"/>
  </dirset>
  <filelist refid="third-party_jars"/>
</classpath>
口干舌燥 2024-11-12 03:27:19

从 Java 6 开始,您可以在类路径中使用通配符,以包含目录中的所有 jar。请参阅 http://download.oracle.com/javase/ 6/docs/technotes/tools/windows/classpath.html

Since Java 6, you may use wildcards in classpath, to include all jars in a directory. See http://download.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html.

最初的梦 2024-11-12 03:27:17

从 Java 6 开始,您可以在类路径中使用通配符:

java -classpath 'lib/*'

请注意,您必须引用类路径字符串以避免 shell 扩展通配符。

Since Java 6, you can use wildcards in your classpath:

java -classpath 'lib/*'

Note that you must quote the classpath string to avoid having the shell expand the wildcard.

暖心男生 2024-11-12 03:27:17

您可以以编程方式向类路径添加新路径:

String currentPath = System.getProperty("java.library.path");
System.setProperty( "java.library.path", current + ":/path/to/my/libs" );

// this forces JVM to reload "java.library.path" property
Field fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );

您可以添加路径,因此无需列出所有 jar。这只会更改您的 JVM 实例的类路径,因此不会影响其他 java 应用程序。

更新:

:/ 是 UNIX 特定的库路径和文件夹路径分隔符。对于多操作系统,您应该使用“path.separator”和“file.separator”系统属性

You can programmatically add a new path to classpath:

String currentPath = System.getProperty("java.library.path");
System.setProperty( "java.library.path", current + ":/path/to/my/libs" );

// this forces JVM to reload "java.library.path" property
Field fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );

You can add a path, so no need to list all jars. This changes classpath only for your JVM instance, so it will not affect other java applications.

Update:

: and / are UNIX-specific lib-path and folder-path separators. For multi-OS you should use "path.separator" and "file.separator" system properties.

奈何桥上唱咆哮 2024-11-12 03:27:17

您可以设置环境变量 CLASSPATH(使用 shell 的正确语法来执行此操作,例如 bashWindows XP 等)。

您还可以创建某种类型的配置文件来始终为您执行此操作,例如 .bashrc。当然,这会影响每次在该配置文件下使用 java 命令的时间。

如果您的主类位于 jar 中,您还可以使用 jar 的清单来设置类路径。 Sun/Oracle 有一个关于执行此操作的教程页面。创建一个名为 Manifest.txt 的文件。在该文件中添加以下行:

类路径:jar1-名称 jar2-名称 目录名称/jar3-名称

其中各个 jar1-name 部分是类路径上的实际 jar。

然后使用以下命令创建 jar:

jar cfm MyJar.jar Manifest.txt MyPackage/*.class

Ant Jar 任务 设置清单属性,或使用 Maven jar 插件 或无论您的构建如何工作,请获取 jar 的清单集。

或者像现在一样继续使用 --classpath。

You can set the environment variable CLASSPATH (use the proper syntax for your shell to do this, ex. bash, Windows XP, etc).

You can also create some sort of profile file that does this for you all the time, ex .bashrc. This will affect every time the java command is used under that profile, of course.

If your main class is in a jar, you can also use the jar's manifest to set the classpath. Sun/Oracle has a tutorial page on doing this. Create a file called Manifest.txt. In that file add the line:

Class-Path: jar1-name jar2-name directory-name/jar3-name

where the various jar1-name parts are actual jars on your classpath.

Then create your jar using:

jar cfm MyJar.jar Manifest.txt MyPackage/*.class

Or the Ant Jar Task with manifest attribute set, or use the Maven jar plugin or however your build works, get the manifest set for the jar.

Or continue to use --classpath as you are currently.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文