`
征途2010
  • 浏览: 247659 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java执行jar中的class类

    博客分类:
  • java
阅读更多

很多情况都会需要运行jar,网上资料很多,大致分为三种方法:

一、直接达成可执行的jar。

二、定义lib path,使用命令执行。

三、定时classloader,手动加载jar。

 

第一种方案比较简单,就不做介绍。

 

第二种方案比较适用于jar都集中在一个目录下,命令如下:

java -Djava.ext.dirs="../3rdLib"  -cp . com.aspire.bdc.component.codegenerate.main.StartGenerate 

使用的是 -Djava.ext.dirs参数来加载jar。

 

第三种方案,比较灵活,可以加载不同目录下的jar,代码如下:

首先定义一个ClassLoaderUtil

package com.whty.onest;

import java.io.File;
import java.io.PrintStream;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;

public final class ClassLoaderUtil
{
  private static Method addURL = initAddMethod();

  private static URLClassLoader system = (URLClassLoader)ClassLoader.getSystemClassLoader();

  private static final Method initAddMethod()
  {
    try
    {
      Method add = URLClassLoader.class
        .getDeclaredMethod("addURL", new Class[] { URL.class });
      add.setAccessible(true);
      return add;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }

  private static final void loopFiles(File file, List<File> files)
  {
    if (file.isDirectory()) {
      File[] tmps = file.listFiles();
      for (File tmp : tmps) {
        loopFiles(tmp, files);
      }
    }
    else if ((file.getAbsolutePath().endsWith(".jar")) || (file.getAbsolutePath().endsWith(".zip"))) {
      files.add(file);
    }
  }

  public static final void loadJarFile(File file)
  {
    try
    {
      addURL.invoke(system, new Object[] { file.toURI().toURL() });
      System.out.println("加载JAR包:" + file.getAbsolutePath());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public static final void loadJarPath(String path)
  {
    List files = new ArrayList();
    File lib = new File(path);
    loopFiles(lib, files);
    for (File file : files)
      loadJarFile(file);
  }
}

 然后新建一个测试类ServerStart:在main方法中执行libpath

public class ServerStart
{
  public static void main(String[] args)
  {
    try
    {
      ClassLoaderUtil.loadJarPath(System.getProperty("user.dir") + "/lib");

      System.out.println(FeiZoPanClient.uploadFile("/home/edu2/page.txt"));
      System.out.println(FeiZoPanClient.uploadFile("/home/edu2/resource.war"));
      System.out.println(FeiZoPanClient.uploadFile("/home/edu2/resource.txt"));
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}

 最后执行使用java命令执行java ServerStart

分享到:
评论

相关推荐

    Java 自动加载JAR文件并运行其中的类方法

    在Java编程中,有时我们需要动态地加载外部JAR文件,并执行其中特定的类方法,这在插件系统、模块化应用或动态扩展性需求中尤为常见。本篇将详细讲解如何实现这一目标。 首先,理解JAR(Java Archive)文件是Java...

    编译运行java带jar包

    在Java编程环境中,有时我们需要将多个类打包成一个可执行的JAR(Java Archive)文件,以便于分发和执行。这个过程涉及到编译Java源代码、创建类路径(classpath)、构建MANIFEST.MF文件以及最终打包成JAR。下面我们...

    java调用外部jar文件

    在Java编程中,有时我们需要在运行时加载和执行外部的jar文件,这通常是出于灵活性、模块化或插件架构的需求。这个过程涉及到类加载器(Class Loaders)的概念,它是Java虚拟机(JVM)的一个核心特性。下面将详细...

    JAVA 将class打包为jar

    通过上述步骤,我们可以有效地将Java程序中的多个Class文件打包成一个JAR文件。这种方式不仅简化了项目的分发流程,还提高了代码的安全性和可维护性。在实际操作过程中,还需要根据具体需求调整细节,例如自定义...

    修改jar包中的class文件

    当我们运行一个JAR文件时,Java虚拟机(JVM)会加载其中的class文件并执行其中的代码。 修改JAR文件中的class文件涉及以下几个步骤: 1. **解压JAR文件**:使用解压缩工具(如WinRAR、7-Zip或命令行的jar命令)将...

    java 导出 jar 文件 执行批处理

    在Java开发中,导出JAR文件是一个常见的需求,特别是在创建可执行的Java应用程序时。`test.jar`可能就是一个这样的可执行JAR文件。 这篇名为“java 导出jar文件 执行批处理”的博文,虽然没有提供具体内容,但我们...

    java生成Jar文件命令

    在Java开发过程中,将源代码编译成可执行的程序时,我们经常需要将相关的类文件、资源文件等打包成一个独立的可执行文件,这就是Java的Jar(Java Archive)文件。Jar文件不仅可以方便地分发和运行Java应用程序,还...

    java jar反编译工具 java Class反编译工具

    Java开发过程中,有时我们需要查看或理解已编译的Class文件中的源代码,因为Java的编译过程会将源代码转化为字节码(.class文件)。在这种情况下,反编译工具就派上了用场。本篇文章将详细介绍Java的jar反编译工具...

    Linux上执行带main方法的java文件

    这里需要注意的是命令中的`-jar`选项,它告诉Java运行时环境去读取该文件的`manifest.mf`文件,并从中找出`Main-Class`,然后执行该类的`main`方法。 #### 总结 通过上述步骤,可以在Linux环境下顺利地执行含有`...

    dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java

    这里的`-jar`选项告诉Java虚拟机(JVM)直接从JAR文件中加载主类并执行。 接下来,我们讨论如何在命令行下运行JUnit测试。JUnit是Java中最常用的单元测试框架,它提供了编写和运行测试用例的便利工具。如果你的项目...

    Java 动态加载jar文件示例

    在Java编程语言中,动态加载jar文件是一种关键的特性,它允许程序在运行时加载新的类库或组件,而不是在编译时静态地链接。这种技术对于实现插件式开发或者模块化系统至关重要,因为它提供了灵活性和可扩展性。下面...

    java 程序都编译成执行文件jar命令详解

    为了让 Java 程序可以直接通过双击运行,我们需要创建一个可执行的 JAR 文件。这需要在 MANIFEST.MF 文件中指定 `Main-Class`,这是程序的入口点。假设 `Test.class` 是程序的主类,属于 `test` 包,MANIFEST.MF ...

    java打包jar文件实例

    Java打包JAR(Java Archive)文件是将多个类文件、资源文件和其他...总之,Java打包JAR文件是开发过程中的重要步骤,它使得代码的分发和执行变得更加方便。理解如何创建和使用JAR文件是每个Java开发者的基本技能之一。

    java class jar 文件查看器.7z

    Java Class和JAR文件是Java编程语言中至关重要的组成部分,它们与Java应用程序的运行密切相关。在深入探讨如何查看和理解这些文件之前,我们先来了解一下它们的基本概念。 **Java Class文件**: Java Class文件是...

    java打包为jar

    在Java开发过程中,将项目打包成可执行的JAR...总的来说,将Java工程打包为可执行的JAR文件涉及选择合适的打包工具、配置主类、处理依赖以及运行方式的选择。根据不同的需求和工作环境,可以选择最适合的方法进行打包。

    Java加载。jar包

    ### Java加载.jar包详解 #### 一、Java 类加载机制概览 自 JDK 1.2 版本之后,Java 类加载机制发生了一个重要的变化,引入了一种名为**类加载委托**的概念。这一机制的核心思想在于,如果某个 `ClassLoader` 无法...

    java的jar包

    JAR文件包含编译后的.class文件,元数据(如MANIFEST.MF文件),以及其他资源文件,如图片、声音或配置文件。这些打包在一起的文件可以被Java虚拟机(JVM)作为一个单元来处理,提高了代码的可移植性和管理性。 在...

    java 可执行jar

    在Java中,创建可执行JAR文件通常涉及以下步骤: 1. **编写代码**:首先,你需要用Java编写程序,包含所有的类和方法。确保所有的类都正确地相互引用,并且有一个主类,其中包含了`public static void main(String...

    C#调用java类、jar包方法

    在跨平台开发中,有时需要将不同编程语言的组件整合在一起,例如在C#应用中调用Java类或使用Java的jar包。本篇将详细阐述如何在C#环境中实现对Java类的调用以及使用Java的jar包。 首先,要理解C#与Java之间的互操作...

    在可执行jar中载入第三方jar的几个解决方法

    1. **类路径嵌入**:在构建可执行JAR时,可以将第三方JAR文件解压并将其内容合并到主JAR中。这样,所有类都位于同一个JAR中,可以正常加载。使用如Apache Maven的`maven-shade-plugin`或Gradle的`Shadow`插件可以...

Global site tag (gtag.js) - Google Analytics