`

Building a java classpath from a windows batch file (Reposted)

 
阅读更多

A great feature introduced with the JDK 6 is the improved classpath syntax for including Jars of a specific directory. This allows you to do this

javac -cp "lib\*" MyClass.java
java -cp "lib\*" MyClass

from the command line without using a build system like Maven or Ant. But each of you who has to build and run Java classes with the JDK 5 or earlier and suffer from some project restrictions that reduces the set of tools to the ordinary command line will have to build the proper classpath by naming each Jar separately:

javac -cp "lib\jar1.jar;lib\jar2.jar" MyClass.java
java -cp "lib\jar1.jar;lib\jar2.jar" MyClass

On a Unix based system one could use glob in a shell script. The doomed Windows users can either use some shell replacements or have to build the command line with the arguable help of batch files. This blog post serves as a reference for those who stumble across loops and delayed expansion of variables in Windows batch files. To make the story of a bumpy road short here is the working solution for Windows XP:

REM needed to overcome weird loop behavior
REM in conjunction with variable expansion
SETLOCAL enabledelayedexpansion

REM construct classpath of seperate jars
cp=explicitlyKnownJar1.jar;explicitlyKnownJar2.jar;

FOR %%F IN (lib/*.jar) DO (
  SET cp=!cp!;lib/%%F%
)

javac -cp "%cp%" MyClass.java
java -cp "%cp%" MyClass

Another Sample:
@echo off
 setLocal EnableDelayedExpansion
 set CLASSPATH="for/R ./lib %%a in (*.jar)do(
   set CLASSPATH=!CLASSPATH!;%%a
 )
 set CLASSPATH=!CLASSPATH!"
 echo !CLASSPATH!

Please note that you should select the needed Jars carefully since Windows XP cannot handle environment variables longer than 8KB. Try to use relative files names to “solve” this issue. If relative paths are no option you could try to use virtual drive letters instead.

Anyway, my advice is: Convince your “build manager” that you need a true build system in order to ensure the product quality and safe hours of work (around) time. In Eclipse a first draft of such an Ant script could be produced using “Export… Ant Buildfiles”.

分享到:
评论

相关推荐

    java classpath 配置详细讲解

    ### Java Classpath 配置详解 #### 一、前言 对于初学Java的朋友而言,配置Java环境常常是一项艰巨的任务,尤其是如何正确设置`classpath`。这篇文章将通过一系列实际操作来详细阐述`classpath`的配置过程,帮助...

    java classpath 理解

    ### Java Classpath 理解 #### 一、在命令行查看 Classpath 在 Java 开发环境中,了解如何查看当前环境下的 classpath 非常重要。这有助于开发者明确类库和其他依赖项的位置,从而更好地管理项目的运行环境。 1. ...

    java classpath 批量设置脚本

    linux bash: YOUR_LIB=your_path ... windows : SETLOCAL ENABLEDELAYEDEXPANSION set LIB=xx set CLASSPATH=. FOR %%C IN (LIB\*.jar) DO set CLASSPATH=!CLASSPATH!;%%C echo %CLASSPATH%

    java的classpath的终结者(不会让你失望)

    ### Java的Classpath详解及其重要性 在Java编程的学习与实践中,环境配置是入门的关键步骤之一,其中最为棘手的问题之一便是如何正确设置`classpath`。`classpath`不仅影响着程序能否正常编译和运行,还关系到...

    在linux和windows下动态设置classpath调用java类方法脚本代码

    本文将详细讲解如何在Linux和Windows操作系统下动态设置classpath以调用Java类方法,并提供实际示例和文档。 一、Linux环境下设置classpath 在Linux系统中,你可以通过以下几种方式设置classpath: 1. **命令行...

    Java环境配置与设置JAVA_HOME_CLASSPATH_PATH的目的

    Java 环境配置与设置 JAVA_HOME, CLASSPATH, PATH 的目的 Java 环境配置是 Java 开发的基础,我们需要正确地配置 JAVA_HOME, CLASSPATH, PATH 等环境变量,以便正确地编译和运行 Java 程序。在本节中,我们将详细地...

    Java命令行classpath的设置

    Java命令行classpath(类路径)的设置是Java开发过程中的一项基础操作,对于理解和运行Java程序至关重要。类路径是指定Java虚拟机(JVM)在执行Java程序时查找类文件的位置。正确配置类路径能确保JVM能够找到并加载...

    java Classpath全解

    ### Java Classpath 全解 对于初学者而言,理解 Java 中的 `classpath` 概念可能会感到有些困难。很多时候,程序在某个环境下可以正常运行,但换到另一个环境时却出现了问题,这往往与 `classpath` 设置不当有关。...

    Java 中的 ClassPath 和 Package

    Java中的ClassPath和Package是Java开发中至关重要的概念,它们直接影响到Java程序的编译和运行。在这篇文章中,我们将详细探讨这两个主题。 首先,让我们理解什么是ClassPath。ClassPath是Java虚拟机(JVM)查找类...

    Eclipse运行TOMCAT 出现在a java exception has occurred的解决办法。

    解决"a java exception has occurred"的方法非常简单,只需要在Eclipse中添加tomcat-ujli.jar到classpath中即可。下面是添加tomcat-ujli.jar的步骤: 1. 在Eclipse中双击TOMCAT SERVER,出现"Edit launch ...

    java classPath checker

    java classPath checker eclipse myeclipse

    java中path和classpath的设置

    ### Java中的Path与Classpath设置详解 在Java开发过程中,正确配置环境变量是十分重要的一步。其中,`path`和`classpath`是最为关键的两个环境变量,它们直接影响到Java程序能否正常编译和运行。 #### 一、Path 的...

    java classloader classpath 张孝祥

    ### Java ClassLoader与ClassPath详解 #### 一、概述 在Java编程中,类加载机制是十分关键的一个环节。类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath...

    13-Java语言(classpath环境变量)

    Java语言的classpath环境变量是Java开发和运行过程中不可或缺的一个配置项。它定义了Java虚拟机(JVM)在执行程序时查找类文件的路径,确保JVM能够找到所需的类库和资源。理解并正确设置classpath对于Java开发者至关...

    classpath 和path

    1. **通过自动执行批处理文件**:早期版本的Windows如Win95/98可以在`autoexec.bat`文件中设置`JAVA_HOME`、`PATH`以及`CLASSPATH`: ```batch JAVA_HOME=c:\j2sdk1.4.1 PATH=%JAVA_HOME%\bin;%PATH% CLASSPATH=...

    Java程序快速转换为windows服务运行

    wrapper.java.classpath.2=[jarfile/path] ``` `[jarfile/path]`应该被替换为你的Java应用程序依赖的JAR文件所在的路径。 4. **设置JNI库路径**: ```properties wrapper.java.library.path.1=. ``` 如果你的...

    java ClassPath 构建

    Java的ClassPath构建是Java应用程序运行时环境查找类和资源的重要机制。理解并正确设置ClassPath对于任何Java开发者来说都是至关重要的,因为它决定了虚拟机(JVM)如何找到并加载所需的类文件。在这个主题中,我们...

    java中File的相对路径与绝对路径总结

    ### Java中File的相对路径与绝对路径总结 在Java Web开发过程中,经常需要处理文件的读写操作,尤其是在运行时获取配置文件、动态加载对象等情况。对于这些需求,理解和掌握文件的相对路径与绝对路径至关重要。 ##...

    关于classpath

    Java的classpath是每个Java开发者都必须了解的关键概念,它决定了JVM(Java虚拟机)在执行Java程序时如何查找和加载所需的类文件。本文将深入探讨classpath的基本原理、配置方式以及如何确保`javac`正确编译运行Java...

Global site tag (gtag.js) - Google Analytics