当使用Matlab中的java时,有没有办法弄清楚matlab的java类路径在哪里被加载?我正在尝试诊断由同时使用的同一类的冲突版本引起的错误.
具体来说,我正在寻找的类是org.apache.lucene.store.FSDirectory.它似乎被其中一个matlab工具箱使用,但我不知道哪一个.
我试图在eclipse中编译并运行一个简单的java类.编译任务工作正常,因为我没有指定目标文件夹,所以构建文件与源位于同一目录中.哪个没关系,目前我需要的是学习如何使用main()方法运行该类.
我已经尝试使用类的完全限定名称(包名称等)和类名,但总是得到一个java.lang.ClassNotFoundException
Buildfile: C:\Users....\build.xml
run:
[java] java.lang.NoClassDefFoundError: code/control/MyClass
[java] Caused by: java.lang.ClassNotFoundException: code.control.MyClass
[java] at java.net.URLClassLoader$1.run(Unknown Source)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClassInternal(Unknown Source)
[java] Could not find the main class: code.control.MyClass. Program will exit.
[java] Exception in thread "main"
[java] Java Result: 1
compile:
default:
BUILD SUCCESSFUL
Total time: 234 milliseconds
Run Code Online (Sandbox Code Playgroud)
下面是我的build.xml文件中的目标:
<target name="default" depends="compile" description="learn">
</target>
<target name="compile" depends="run">
<javac srcdir="src/" …Run Code Online (Sandbox Code Playgroud) 我的商店已经运行Oracle的Application Server多年了.因此,在我们更好地了解之前,我们已经开发出一种规范,即将应用程序配置文件存储在WAR文件之外,并使用特定于Oracle的部署描述符将特定于应用程序的配置目录添加到每个应用程序中.此部署描述符允许我们在应用程序层添加类路径元素,而不必在WAR中包含所有依赖项.
现在我们面临升级到WebLogic 10.3的问题,我需要为依赖于外部配置的应用程序找到替代方案.
WebLogic中是否有一种方法可以将外部jar或目录添加到应用程序级别的类加载器中?我已经找到了将它们添加到系统类加载器的方法,但我更愿意将它们添加到应用程序级别,以避免在修改部署描述符之外重新处理应用程序.
在WebLogic 10中是否可以这样做?
我的问题是生成版本1 UUID.我们使用Jetty 6.x,Maven(启动Jetty等)和Apache Commons ID(从当前时间生成UUID版本1).
Apache Commons ID需要使用参数向JVM通知配置文件,例如'org.apache.commons.id.uuid.config.resource.filename = commons-id-uuid.xml'.我检查了Apache Commons ID代码,它试图从类路径中找到该文件.Jetty的文档声明WEB-INF/lib和WEB-INF/classes在类路径中.'commons-id-uuid.xml'可以从WEB-INF/classes目录的根部署的war文件中找到,但是Jetty无法加载它:
Message: java.lang.RuntimeException:
java.lang.IllegalStateException: commons-id-uuid.xml loaded as system resource is null
Run Code Online (Sandbox Code Playgroud)
Jetty使用以下命令启动:
mvn jetty:run -Dorg.apache.commons.id.uuid.config.resource.filename=commons-id-uuid.xml
Run Code Online (Sandbox Code Playgroud)
什么出了什么问题?我们只需要生成UUID版本1标识符.有什么建议?
java.lang.NoClassDefFoundError:org/apache/poi/hssf/usermodel/HSSFWorkbook
Run Code Online (Sandbox Code Playgroud)
这是java web项目.java项目没问题,但在网络上,我遇到了这个例外.
Caused by: java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
Run Code Online (Sandbox Code Playgroud)
maven依赖:
<!-- apahce poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我有以下build.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Minimal" default="default" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<path id= "libs.folder" >
<fileset dir= "lib" >
<include name= "*.jar" />
</fileset>
</path>
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="libs.folder" />
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="libs.folder"/>
<artifact:pom id="pom.file" file="pom.xml" />
<property name="pom.version" value="${pom.file.version}"/>
<groovy src="test.groovy">
<arg line="3"/>
</groovy>
...
Run Code Online (Sandbox Code Playgroud)
它位于以下结构中:
my-project
-> lib
-> maven-ant-tasks.jar
-> svnant.jar
-> groovy-all.jar
-> svnClientAdapter.jar
-> build.xml
-> pom.xml
-> test.groovy
Run Code Online (Sandbox Code Playgroud)
当我运行构建文件时,我得到:
BUILD FAILED
....\build.xml:18: Problem: failed to create task or type antlib:org.apache.maven.artifact.ant:pom
Cause: The name is undefined.
Action: …Run Code Online (Sandbox Code Playgroud) 我试图在实际调用目标之前向ant的类路径添加更多自定义jar,但它没有采用我的自定义jar,因此我从ant的taskdef类中得到错误无法找到ClassName.有办法处理这个吗?
main.ksh
#/bin/ksh
.
.
ANT_CLASSPATH=$JDK_HOME/jre/lib/rt.jar
ANT_CLASSPATH=$ANT_CLASSPATH:$ANTBUILD_HOME/lib/ant-$ANT_VERSION.jar
.
.
echo $ANT_CLASSPATH
export ANT_CLASSPATH
.
.
# java call with framed ANT_CLASSPATH to ant target which is part of main build.xml ### This call, I don't want to run without my custom jar in ANT_CLASSPATH ###
Run Code Online (Sandbox Code Playgroud)
我的新ksh文件如下所示,我将新的自定义jar添加到ANT_CLASSPATH
sub.ksh
#/bin/ksh
# Adding some more to jars to ANT_CLASSPATH
export ANT_CLASSPATH=../lib/custom/custom-3.0.jar
main.ksh new-build.xml $*
Run Code Online (Sandbox Code Playgroud) 在Clojure中,我有一个Leiningen项目
/src/project/core.clj
Run Code Online (Sandbox Code Playgroud)
我想为此添加一个子目录.例如.
/src/project/examples/example-one.clj
Run Code Online (Sandbox Code Playgroud)
在我的core.clj文件中,我尝试从中拉入
project.examples.example-one
Run Code Online (Sandbox Code Playgroud)
但lein编译仍然告诉我
Could not locate project/examples/example_one__init.class or project/examples/example_one.clj on classpath:
Run Code Online (Sandbox Code Playgroud)
如果在主代码目录中添加子目录,是否必须显式更新project.clj文件?(我没有看到主代码目录本身是明确给出的.)
我有一个简单的单文件java程序,它依赖于一个静态jar.java代码和jar驻留在同一目录中.对于这种一次性解决方案,我不想引入ant或maven的重量,只想直接编译它.
在我的开发框中,以下编译并运行我的代码:
javac -cp ".;dependency.jar" File.java
java -cp ".;dependency.jar" File
Run Code Online (Sandbox Code Playgroud)
但是,在我的测试框中,java命令失败,我得到以下输出:
Error: Could not find or load main class File
Run Code Online (Sandbox Code Playgroud)
如果我将类路径arg更改为-cp "."我得到以下输出:
Exception in thread "main" java.lang.ClassNotFoundException: dependency
Run Code Online (Sandbox Code Playgroud)
我的开发盒是64位Windows/Cygwin和java版本1.7.0_55.我的测试盒是64位Linux和java版本1.7.0_45.
我的测试盒出了什么问题?
尝试进行MAVEN INSTALL时出现此错误。我尝试排除,但不确定pom文件中的位置。让我在pom文件中应如何以及应使用哪些排除标签。我还将我的pom文件片段附加在其中,以包括排除项SLF4J:类路径包含多个SLF4J绑定。
SLF4J:在[jar:file:/ C:/Users/147188/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/ org / slf4j / impl / StaticLoggerBinder.class]
SLF4J:在[jar:file:/ C:/Users/147188/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.10.0/log4j-slf4j-impl-2.10.0中找到绑定.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:有关说明,请参见http://www.slf4j.org/codes.html#multiple_bindings。SLF4J:实际绑定的类型为[ch.qos.logback.classic.util.ContextSelectorStaticBinder]
POM文件:
<!-- Start of required part to make log4j work -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- End of required part to make log4j work -->
Run Code Online (Sandbox Code Playgroud)