精华内容
下载资源
问答
  • Boot-Class-Path配置目录无效

    千次阅读 2018-04-28 22:17:31
    本文作者:suxingrui ... 版权声明:本文为原创文章,转载请注明出处...如题,在使用Java Agent过程中发现,agent JAR文件定义的manifest属性中的Boot-Class-Path配置成目录时无效。 虽然官方说明是支持目录的: B...

    本文作者:suxingrui
    本文链接:https://blog.csdn.net/suxingrui/article/details/80114768
    版权声明:本文为原创文章,转载请注明出处。

    如题,在使用Java Agent过程中发现,agent JAR文件定义的manifest属性中的Boot-Class-Path配置成目录时无效。

    虽然官方说明是支持目录的:
    Boot-Class-Path
    A list of paths to be searched by the bootstrap class loader. Paths represent directories or libraries (commonly referred to as JAR or zip libraries on many platforms). …详见

    但尝试多次之后发现,确实无效。追踪溯源,只能去怼源码,顺便记录下调查过程。


    调查基于JDK8、JDK8、JDK8!

    InvocationAdapter.c

    JNIEXPORT jint JNICALL
    Agent_OnLoad(JavaVM *vm, char *tail, void * reserved) {// agent加载入口
            ...
            /*
             * If the Boot-Class-Path attribute is specified then we process
             * each relative URL and add it to the bootclasspath.
             */
            bootClassPath = getAttribute(attributes, "Boot-Class-Path");
            if (bootClassPath != NULL) {
                appendBootClassPath(agent, jarfile, bootClassPath);
            }
            ...
    }
    
    static void
    appendBootClassPath( JPLISAgent* agent,
                         const char* jarfile,
                         const char* pathList ) {
               ...
               // 循环遍历path:pathList,查找path下的jar文件,添加到bootstrap class loader
               jvmtierr = (*jvmtienv)->AddToBootstrapClassLoaderSearch(jvmtienv, path);
               ...
    }

    jvmtiEnv.cpp

    jvmtiError
    JvmtiEnv::AddToBootstrapClassLoaderSearch(const char* segment) {// 查找实现
        ...
        // create the zip entry
        ClassPathZipEntry* zip_entry = ClassLoader::create_class_path_zip_entry(segment);
        if (zip_entry == NULL) {
          return JVMTI_ERROR_ILLEGAL_ARGUMENT;
        }
        ...
    } /* end AddToBootstrapClassLoaderSearch */

    classLoader.cpp

    // Create a class path zip entry for a given path (return NULL if not found
    // or zip/JAR file cannot be opened)
    ClassPathZipEntry* ClassLoader::create_class_path_zip_entry(const char *path) {
      // check for a regular file
      struct stat st;
      if (os::stat(path, &st) == 0) {
        if ((st.st_mode & S_IFREG) == S_IFREG) {// S_IFREG 表示一般文件
          ...
        }
      }
      return NULL;
    }

    嗯,很好。只支持文件!

    刚好看到create_class_path_zip_entry方法上面的create_class_path_entry(应该对应的是Class-Path的配置,待查)
    包含以下逻辑

      } else {
        // Directory
        new_entry = new ClassPathDirEntry(path);
        if (TraceClassLoading) {
          tty->print_cr("[Path %s]", path);
        }
      }

    所以呢,官方也有好些坑等人去填。

    展开全文
  • 4、解压刚才的jar包,找到MANIFEST.MF文件,打开编辑,添加Main-Class: com.test.Test(没有的话可以不添加) 5、将刚才修改好的MANIFEST.MF文件放入到项目中(建议放在根路径下,位置随意) 6、在项目上右键...

    每次在导出一个可执行jar包时,MANIFEST.MF文件中的jar引用路径都让我很难受,后来发现了一种非常好用的方法,推荐给大家

    这个方法借助了eclipse的导出功能,下面看步骤:

    1、选定项目右键-->Export-->选择Runnable JAR file

    2、点击Next,选择一个可执行类(没有的话随便选择一个),指定jar包存放路径,Library handling记住选择第三个,点击finish

    4、解压刚才的jar包,找到MANIFEST.MF文件,打开编辑,添加Main-Class: com.test.Test(没有的话可以不添加)

    5、将刚才修改好的MANIFEST.MF文件放入到项目中(建议放在根路径下,位置随意)

    6、在项目上右键点击Export

    7、选择JAR file,点击Next

     

    8、这里面选择和默认保持一致,Next

    9、保持默认勾选,点击Next

    10、选择我们刚才生成的MANIFEST.MF文件,点击Finish就完成了

    展开全文
  • maven下报错 Failed to read Class-Path attribute from manifest of jar file:xxx 跟着xxx目录下去,删掉文件夹,update projects,会重新下载。

    maven下报错 Failed to read Class-Path attribute from manifest of jar file:xxx
    跟着xxx目录下去,删掉文件夹,update projects,会重新下载。

    展开全文
  • maven项目生成可执行jar包:使用MANIFEST.MF指定class-path 文章目录maven项目生成可执行jar包:使用MANIFEST.MF指定class-path@[toc]一、生成Runnable JAR file二、设置JAR包位置,复制依赖,设置可执行类![在这里...

    maven项目生成可执行jar包:使用MANIFEST.MF指定class-path

    一、生成Runnable JAR file

    右键项目 -> Export -> Runnable JAR file
    在这里插入图片描述

    二、设置JAR包位置,复制依赖,设置可执行类

    在这里插入图片描述

    三、解压jar包,找到MANIFEST.MF文件,放到项目中(建议放在项目根目录下)

    在这里插入图片描述

    四、修改MANIFEST.MF文件

    在这里插入图片描述

    五、右键项目 -> Export -> JAR file

    在这里插入图片描述

    六、默认一致,点击Next

    在这里插入图片描述

    七、默认一致,点击Next

    在这里插入图片描述

    八、选择生成的MANIFEST.MF文件,点击Finish

    在这里插入图片描述

    九、将第二步复制的依赖文件夹放到可执行Jar相同目录下,运行可执行Jar包

    执行命令:Java -jar 包名.jar

    展开全文
  • - ./spark-submit with --driver-class-path to augment the driver classpath - spark.executor.extraClassPath to augment the executor classpath
  • maven下报错 Failed to read Class-Path attribute from manifest of jar file:xxx 跟着xxx目录下去,删掉文件夹,Alt+F5重构项目,会重新下载。即可
  • 最终的效果就是在target下多出一个lib目录,里面包含项目使用到的一些第三方的jar,或者自己的其他工程的jar,然后主jar包的MF文件中多了Main-ClassClass-Path的配置信息,这是保证该jar包可执行的条件。...
  • 比如helloworld项目下有个lzw包里面有个test类并导入了swing包该怎么写这一行,求教,谢谢
  • tomcat在8.5.2 中 修改了加载jar的方式,8.5.2 版本会解析jar中MANIFEST.MF文件,当该文件包含class-path属性时,会把该属性对象值,解析成需要加载的jar给加载进来。这个就是根本原因。没得办法,只有自降版本到...
  • 当报错: Failed to read Class-Path attribute from manifest of jar file:/C:/Users/Administrator/.m2/repository 去到: 将jar包删除再下载即可
  • 如何把外部jar包加入class-path

    千次阅读 2016-02-25 19:40:39
    创建lib文件夹,添加jar后,选中右键选择addtobuildpath.
  • java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/XXX这个错误的解决方法就是删掉对应的jar然后maven update
  • 1 2 3 4 5 6 7 8 9 10 11 12  org.apache.maven.plugins  maven-jar-plugin        true  lib/
  • 打包jar时Class-Path的配置方式

    千次阅读 2013-06-25 11:13:32
    1. Manifest-Version、Main-ClassClass-Path后面跟着一个英文的冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath。 2. Class-Path中的各项应使用空格分隔,不是逗号或分号。 3. Class-Path中如果...
  • Android Studio导入Eclipse项目报错Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject.的解决办法错误内容 错误原因 解决步骤错误内容:Android Studio导入Eclipse...
  • jar包下MANIFEST.MF 中的 Class-Path 设置

    万次阅读 2012-08-29 12:52:18
    1. 基本格式  属性名称+:+空格+... Class-Path 当前路径是jar包所在目录,如果要引用当前目录下一个子目录中的jar包,使用以下格式  子目录/xxx.jar 子目录/yyy.jar  技巧:多个jar包的引用,可
  • mark 下,以备之后查看 ...通过ANT生成MANIFEST.MF中的Class-Path属性 http://www.cnblogs.com/51cto/archive/2010/06/23/1763878.html 工程如何能引用到classpath jar中的jar里的类文件
  • 当用maven的maven-jar-plugin插件打包依赖的SNAPSHOT的jar包就会表现为MANIFEST.MF中的Class-Path: lib/facede-user-1.0-20160512.093945-1.jar 但是打包到../lib/facede-user-1.0-SNAPSHOT.jar下面包,这样就会出现...
  • 今天安装了最新版本的idea,导入项目时报idea Could not determine the class-path for interface org.jetbrains.kotlin.gradle.KotlinGradleModel.错误,网友说是idea的一个bug。解决方法是安装低版本的idea,2017....
  •  <mainClass>  scallop.sca.sample.rmi.Server  </mainClass>  <addClasspath>true  <classpathPrefix>http://10.11.85.17:8081/nexus/content/groups/public/</classpathPrefix>  <classpathLayoutType>...
  • 运行jar设置Class-Path

    千次阅读 2007-06-20 11:50:00
    无论怎么设置classpath参数都无济于事,总是会报ClassNotFound的错误?那么本篇帖子可以帮助你摆脱烦恼 :)当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用...
  • Class-Path: . lib/log4j-1.2.15.jar lib/jdsmsserver-3.4.jar lib/mysql-connector-java-5.1.3-rc-bin.jar     5.jar读取外部配置文件的问题 我想把我项目里面的配置文件 比如dbconfig.properties ...
  • 安装 local-path-storage # kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml namespace/local-path-storage created serviceaccount/...
  • 当jdk从 1.4.0更新到1.4.2时候,启动tomcat运行struts项目后, 后台会出现异常警告:java.util.jar.Attributes read WARNING: Duplicate name in Manifest: Class-Path 这是 jdk 1.4.2的一个bug,我们可以通过修改 ...
  • Kubernetes安装local-path-provisioner基于HostPath使用动态PV 获取local-path-provisioner git clone https://github.com/rancher/local-path-provisioner.git 修改local-path-storage.yaml vi local-path-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,312,970
精华内容 525,188
关键字:

Class-Path