标签: classpath

Java Manifest.mf类路径问题

我一直在尝试运行一个jar文件 - 让我们称之为test.jar - 它在Unix系统上使用Sybase jconn3.jar.

我创建了一个MANIFEST.MF文件,其中包含以下内容:

Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
Run Code Online (Sandbox Code Playgroud)

这给出了一个ClassNotFoundError.$ SYBASE是指向/ opt/sybase13的系统变量; 我也尝试过以下方法:

Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
Run Code Online (Sandbox Code Playgroud)

Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
Run Code Online (Sandbox Code Playgroud)

但是,如果我将jconn3.jar文件从$ SYBASE/jConnect-6_0/classes复制到test.jar所在的目录,并将我的MANIFEST.MF更新为如下所示:

Class-Path: jconn3.jar commons-net-1.3.0.jar
Run Code Online (Sandbox Code Playgroud)

应用程序按预期运行.

现在,我已经能够通过在本地复制它来验证jconn3.jar文件的工作原理; 我的MANIFEST.MF文件包含我的Main-Class的路径,所以这里没有问题.

您认为这可能是什么问题?我一直在看这个东西太久了.谢谢!

java variables system manifest.mf classpath

3
推荐指数
1
解决办法
2万
查看次数

类路径上的类文件的ClassNotFoundException

我有以下代码:

    // Test TODO remove
    try {
        System.out.println(System.getProperties().getProperty("java.class.path"));
        this.getClass().getClassLoader().loadClass("mypackage.MyClass");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

现在输出显示出该类位于类路径上,即:

/...some/path.../workspace/project/target/test-classes:/rest/of/the/classpath
java.lang.ClassNotFoundException: mypackage.MyClass
        ...here be stacktrace...
Run Code Online (Sandbox Code Playgroud)

我还确保类文件确实位于给定位置,即该文件存在:

/...some/path.../workspace/project/target/test-classes/mypackage/MyClass.class
Run Code Online (Sandbox Code Playgroud)

也许以下几点很重要:所示代码是在附加到jUnit测试的javaagent中执行的,我通过编程方式启动了该代码(通过Runtime.execute(...))-因此,很明显,除了背景...但仍然:如果类路径包含带有类的文件夹,那么为什么它不能被加载?

java classpath

3
推荐指数
1
解决办法
2440
查看次数

帮助运行clojure,可能的类路径问题

admin@apollo:~/clojure$ clojure
Clojure 1.0.0-
user=> (require 'clojure.contrib.str-utils)
java.io.FileNotFoundException: Could not locate clojure/contrib/str_utils__init.class or clojure/contrib/str_utils.clj on classpath:  (NO_SOURCE_FILE:0)
user=> 
Run Code Online (Sandbox Code Playgroud)

安装clojure时我做错了什么?为什么cant clojure找不到我的java类?我安装了java.

admin@apollo:~/clojure$ sudo apt-get install sun-java6-jre sun-java6-jdk
sudo: unable to resolve host apollo
Reading package lists... Done
Building dependency tree       
Reading state information... Done
sun-java6-jre is already the newest version.
sun-java6-jdk is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded.


admin@apollo:~/clojure$ java -version
    java version "1.6.0_20"
    Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
    Java …
Run Code Online (Sandbox Code Playgroud)

java clojure classpath

3
推荐指数
1
解决办法
1748
查看次数

未绑定的类路径容器:Eclipse Juno中的'JRE系统库[OSGi/Minimum-1.2]

对于我的课程,我从教授给我们的在线资源中导入代码并尝试在Eclipse Juno中运行它(我不确定它是否会对哪个版本产生影响)并且我收到错误消息"Unbound classpath container:"项目'cs112'中的JRE系统库[OSGi/Minimum-1.2]'我研究了这个问题的几个答案并尝试了多种解决方案,包括构建路径和添加一个名为JRE的库,并设置正确的执行环境!我怎么可能做错了?请帮忙!!

eclipse classpath

3
推荐指数
1
解决办法
2万
查看次数

Gradle - 处理外部资源

我正在尝试将一个简单的Groovy项目移动到Gradle.我几乎能够配置项目,但我不知道如何处理外部资源.

基本上,我的应用程序需要访问JSON中的配置文件.在转移到Gradle之前,我曾经在命令行上传递此JSON文件的位置.我创建了一个简单的bash脚本来调用具有正确资源路径的主类.

使用Gradle,如果我理解正确,我应该能够将这个文件移动到src/main/resources/Groovy类中以某种方式提供它.问题是:怎么样?

编辑

如果我理解正确,资源应该在构建的JAR中结束.我的目标结构就像

src
  main
    groovy
      orgName
        packageName
          source.groovy
    resources
      orgName
        packageName
          config.json
Run Code Online (Sandbox Code Playgroud)

但是我没有看到在build目录中生成的packageName.jar中的资源

groovy classpath gradle

3
推荐指数
1
解决办法
6788
查看次数

Hibernate Bean Validation在类路径中不可用

我今天决定试用Hibernate,看起来很有前途,虽然设置可能更容易.在找到第一百万左右配置错误的解决方案后,我现在坚持使用这个:

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: manager1] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
(...)
Caused by: org.hibernate.HibernateException: Bean Validation not available in the class path but required in javax.persistence.validation.mode
    at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyHibernateListeners(BeanValidationIntegrator.java:281)
    at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:134)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
    ... 5 more
Run Code Online (Sandbox Code Playgroud)

Peristence.xml:

<?xml version='1.0' encoding='utf-8' ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
   <persistence-unit name="manager1" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <class>net.zomis.hibernate.Game</class>
      <class>net.zomis.hibernate.TestFields</class>
      <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
      <validation-mode>CALLBACK</validation-mode>
      <properties>
          <property name="javax.persistence.validation.mode" value="NONE" />  
         <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="validate"/>
      </properties>
   </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

(据我所知)相关部分 hibernate.cfg.xml …

java hibernate classpath bean-validation

3
推荐指数
1
解决办法
4849
查看次数

清单中的ClassPath不起作用

我的jar文件的结构是:

com/my/Main.class
META-INF/MANIFEST.MF
RXTXcomm.jar
Run Code Online (Sandbox Code Playgroud)

Manifest.mf包括:

Manifest-Version: 1.0
Main-Class: com.my.Main
Class-Path: RXTXcomm.jar
Run Code Online (Sandbox Code Playgroud)

(空行)

当我运行我的jar时: java -jar my.jar

我明白了: Exception in thread "main" java.lang.NoClassDefFoundError: gnu/io/SerialPortEventListener

怎么了?

java manifest.mf classpath

3
推荐指数
1
解决办法
3422
查看次数

在intelliJ IDE中获取编译器错误

实际上我今天更新了我的jdk但是当我打开intelliJ时我无法编译任何类..它显示以下消息.."java:在类路径中找不到系统Java编译器"请帮帮我.

java classpath intellij-idea

3
推荐指数
1
解决办法
3165
查看次数

什么时候SLF4J的"动态绑定"功能适合使用?

我对SLF4J很感兴趣,因为它似乎是唯一的Java库(至少我可以解释),它在运行时使用这种所谓的" 动态绑定 "类来定义行为.

通过这个,我的意思是,如果你slf4j-api在编译类路径中包含,你现在可以访问该JAR中包含的所有API类(LoggersLoggerFactories等),但它们的实际运行时行为是no-op(什么都不做),除非你包含一个运行时类路径上的" SLF4J绑定 ",例如slf4j-simple(将日志语句发送到STDOUTSTDERR),或者slf4j-log4j,然后期望Log4J配置等.

就像我上面所说的,这种类型的动态绑定行为似乎是SLF4J项目所特有的.

我想知道为什么?一般来说,在日志记录之外,哪种场景可以保证这种动态绑定作为解决方案?对我来说,它似乎是经典依赖注入(Spring,Guice)的替代方案,几乎将注入推迟到运行时("JIT")确定运行时类路径上可用的匹配类.

所以我问:这个解决方案是否唯一有理由只解决日志记录问题?如果是这样,为什么?如果没有,那么还有哪些其他问题需要这种方法作为解决方案?

java binding classpath classloader slf4j

3
推荐指数
1
解决办法
377
查看次数

IntelliJ tomcat扩展类路径

最近,我从eclipse切换到了Intellij。我正在对Tomcat进行战争,我需要向Tomcat启动配置添加一个外部类路径(带有属性文件)。在Eclipse中可用view servers - Tomcat (2click) -> open launch configuration -> classpath tab -> select user entries -> advanced -> Add Folder

在Intellij中,我尝试过,Menu Run -> edit configuration -> select tc instance -> Configure -> add (+) classes但是当我添加带有属性文件的目录时,在启动过程中,war仍然崩溃,并提示它找不到属性文件。

该文件存在,并且tomcat / eclipse成功启动。我相信在Tomcat中,可以使用修改路径setenv.bat。有什么事吗 我们的最终目标是Websphere,其中从特定目录加载这种与环境相关的属性。因此,maven配置文件是一个选择,但在最终交付时没有用。

java tomcat classpath intellij-idea maven

3
推荐指数
1
解决办法
2014
查看次数