我不确定这是不是问题,但看起来可能就是这种情况.我收到构建错误,告诉我某些包不存在.这些包是存在于lib目录中的.jar文件中的包.我正在编译并复制到classes目录的java源文件中的任何其他包都可以正常工作.以下是与此问题相关的Ant构建脚本的一些基础知识:
<property name="app.name" value="myapp" />
<property name="base.dir" value="${basedir}" />
<property name="build.dir" value="${base.dir}/build" />
<property name="build.webinf.dir" value="${build.dir}/WEB-INF" />
<property name="build.classes.dir" value="${build.webinf.dir}/classes" />
<property name="build.lib.dir" value="${build.webinf.dir}/lib" />
<property name="catalina.dir" value="C:\Program Files\Apache Software Foundation\apache-tomcat-5.5.28" />
<property name="catalina.lib.dir" value="${catalina.dir}/shared/lib" />
<property name="config.dir" value="${base.dir}/config" />
<property name="dist.dir" value="${basedir}/dist"/>
<property name="lib.dir" value="${base.dir}/lib" />
<property name="src.dir" value="${base.dir}/src" />
<property name="www.dir" value="${base.dir}/www" />
<path id="compile.classpath">
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
<pathelement location="${catalina.dir}/common/classes" />
<fileset dir="${catalina.dir}/common/endorsed">
<include name="*.jar" />
</fileset>
<fileset dir="${catalina.dir}/common/lib">
<include name="*.jar" />
</fileset>
<pathelement location="${catalina.dir}/shared/classes"/> …Run Code Online (Sandbox Code Playgroud) 我有一个我用Maven制作的项目.我使用"mvn package"编译了一个JAR,现在我想运行它,最好不要设置一些疯狂的类路径,因为它依赖于Spring和一半的互联网或其他东西.有什么办法可以轻松运行吗?像"mvn run"之类的东西会很棒,或者是将所有依赖项都放入jar中的选项,所以我可以做"java -jar"也很精彩.
你是如何处理这个的,你建议做什么?因为基于〜/ .m2导出CLASSPATH可能只是伤害;-)
我在服务器上运行批处理作业时遇到问题,而在我的开发工作站上从Eclipse运行正常.
我已经使用Roo设置了我的Spring环境,创建了一个实体,并制作了一个可以完成某些工作的批处理,并在我的开发框中进行了测试.我初始化我的上下文并完成工作,但是当我在服务器上运行我的批处理时,上下文没有正确初始化.这是代码:
public class TestBatch {
private static ApplicationContext context;
@SuppressWarnings("unchecked")
public static void main(final String[] args) {
context = new ClassPathXmlApplicationContext("/META-INF/spring/applicationContext.xml");
try {
@SuppressWarnings("unused")
TestBatch app = new TestBatch();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void TestBatch() { /** Do Something using the context **/ }
}
Run Code Online (Sandbox Code Playgroud)
这是日志和例外:
2010-02-16 11:54:16,072 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6037fb1e: startup date [Tue Feb 16 11:54:16 CET 2010]; root of context hierarchy
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:194)
at …Run Code Online (Sandbox Code Playgroud) 我有一个Android项目,分为三个不同的应用程序app-1,app-2并且app-3,它们应用了一些自定义.目前存在大量代码重复,使维护成为一场噩梦:在其中一个分支中进行更改,然后合并其他两个分支.
因此,我们创建了一个名为的库项目,app-core该项目将大部分重复的代码排除在外.到现在为止还挺好.
当我将其启动到已经加载应用程序的模拟器中时(在重构之前),我得到以下异常:
Re-installation failed due to different application signatures
一个不同的签名?但我只是在.classpath链接到app-coreJava项目中添加了一行!
主要问题是:现有用户是否也会受到这种困扰?
而旁边的问题:为什么它是一个不同的签名?
我正在编写一本ANTLR(一个语言处理库)书,有很多例子应该很容易使用命令行编译.
有些信息可以解决问题:
antlr-3.2.jar包含库类.我添加antlr-3.2.jar到CLASSPATH环境变量(Windows 7)和编译类时,javac一切正常.这是我执行编译我的程序:
javac Test.java ExprLexer.java ExprParser.java
Run Code Online (Sandbox Code Playgroud)
Test.java包含my main()-method,ExprLexer而且ExprParser由ANTLR生成.这三个类都使用包含在中的类antlr-3.2.jar.但到目前为止这么好.正如我刚才所说,编译工作正常.
当我试图执行Test.class那个我遇到麻烦的时候.这是我输入的内容:
java -cp ./ Test
Run Code Online (Sandbox Code Playgroud)
执行此操作时,解释器告诉我他找不到包含在其中的ANTLR类antlr-3.2.jar,尽管我在CLASSPATH变量中添加了一个条目.
Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/runtime/Cha
rStream
Caused by: java.lang.ClassNotFoundException: org.antlr.runtime.CharStream
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Test. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows 7和Java 1.6_20.有人能说出发生了什么吗?为什么解释器不会在jar中找到我在Archive中指定的CLASSPATH?
我找到了某种工作方式.我将antlr-3.2.jar复制到Test.class所在的目录中,然后执行:
java …Run Code Online (Sandbox Code Playgroud) 当我在Eclipse中使用我的Web应用程序时,我可以搜索所有类和JAR文件
String cp = System.getProperty("java.class.path");
Run Code Online (Sandbox Code Playgroud)
但是当我在Tomcat或Jetty上部署时,我什么也得不到.
我想找到*.properties位于webapp中的所有文件(在JAR中,如果是爆炸的,在文件夹中).
String cp = System.getProperty("java.class.path");
String pathSep = File.pathSeparator;
String[] jarOrDirectories = cp.split(pathSep);
for (String fileName : jarOrDirectories) {
File file = new File(fileName);
if (file.isFile()) {
logger.debug("From jar "+file.getName());
loadFromJar(file.getPath());
} else {
logger.debug("From folder "+file.getName());
listFolder(file);
}
}
Run Code Online (Sandbox Code Playgroud)
这样,在Eclipse中运行Web应用程序会为我提供所有JAR文件和所有类文件夹,但在Tomcat中部署应用程序时则不行.
如果我能够获得通路就足够了WEB_INF.从那里,这很容易.
我正在编写Apache FOP中包含的FopServlet.java的扩展.
我的平台是Linux CentOS 5.7-64bit,带有Tomcat 5.5.
servlet"有效",但我无法处理SVG文件.我在Tomcat运行servlet时得到的错误是'Batik not in classpath'.但是在'webapps/fop/WEB-INF/lib'中有'batik-all-1.7.jar'和所有其他的jar.我不是Java专家,所以我无法专注于这个问题; 谷歌搜索,也许有一个丢失的罐子,但哪一个?
AVVERTENZA: Batik not in class path
java.lang.NoClassDefFoundError: org/w3c/dom/svg/SVGDocument
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1862)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:888)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1341)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1220)
at org.apache.batik.dom.svg.SVGDOMImplementation.createDocument(Unknown Source)
at org.apache.batik.dom.util.SAXDocumentFactory.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(Unknown Source)
at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我正在按照Google 的逐步配置说明进行操作,但出于某种原因,我找不到他们要求我导入的一些软件包.我的应用程序无法找到的软件包(或我的IDE抱怨的行):
import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAuthorizationRequestUrl;
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到容纳这些的罐子.我的类路径包含:
//The Google Calendar Client API:
google-api-services-calendar-v3-rev16-1.8.0-beta.jar
//And of course the Google API Core:
commons-logging-1.1.1.jar
google-api-client-1.11.0-beta.jar
google-api-client-1.11.0-beta.jar.properties
google-api-client-android-1.11.0-beta.jar
google-api-client-android-1.11.0-beta.jar.properties
google-api-client-android2-1.11.0-beta.jar
google-api-client-android2-1.11.0-beta.jar.properties
google-api-client-appengine-1.11.0-beta.jar
google-api-client-java6-1.11.0-beta.jar
google-http-client-1.11.0-beta.jar
google-http-client-1.11.0-beta.jar.properties
google-http-client-android-1.11.0-beta.jar
google-http-client-android-1.11.0-beta.jar.properties
google-http-client-android2-1.11.0-beta.jar
google-http-client-android2-1.11.0-beta.jar.properties
google-http-client-android3-1.11.0-beta.jar
google-http-client-android3-1.11.0-beta.jar.properties
google-http-client-appengine-1.11.0-beta.jar
google-http-client-gson-1.11.0-beta.jar
google-http-client-gson-1.11.0-beta.jar.properties
google-http-client-jackson-1.11.0-beta.jar
google-http-client-jackson-1.11.0-beta.jar.properties
google-http-client-jackson2-1.11.0-beta.jar
google-http-client-jackson2-1.11.0-beta.jar.properties
google-oauth-client-1.11.0-beta.jar
google-oauth-client-1.11.0-beta.jar.properties
google-oauth-client-appengine-1.11.0-beta.jar
google-oauth-client-java6-1.11.0-beta.jar
google-oauth-client-jetty-1.11.0-beta.jar
google-oauth-client-servlet-1.11.0-beta.jar
gson-2.1.jar
gson-2.1.jar.properties
guava-11.0.1.jar
guava-11.0.1.jar.properties
httpclient-4.0.3.jar
httpcore-4.0.1.jar
jackson-core-2.0.5.jar
jackson-core-2.0.5.jar.properties
jackson-core-asl-1.9.9.jar
jackson-core-asl-1.9.9.jar.properties
jdo2-api-2.3-eb.jar
jetty-6.1.26.jar
jetty-util-6.1.26.jar
jsr305-1.3.9.jar
transaction-api-1.1.jar
xpp3-1.1.4c.jar
Run Code Online (Sandbox Code Playgroud)
我不确定它是什么我错过了,但我需要这些库来继续教程.如果需要更多信息,我将很乐意提供.对于Google Calendar API,我是新手.任何帮助表示赞赏!谢谢!
我有一个构建文件,声明了如图所示的类路径
<path id="compile.classpath">
<fileset dir="${basedir}/lib" includes="**"/>
<fileset dir="${jboss.home}/lib" includes="**"/>
<pathelement path ="${build.classes.dir}"/>
</path>
Run Code Online (Sandbox Code Playgroud)
我试着查看文档,但我无法理解使用
pathelement.
我知道ID在执行任务时用于引用此类路径,而fileset包含jar文件.
编辑1:
我的疑问是为什么我们不能使用fileset包含类文件代替pathelement?
在webapp的控制器中,当给定条件为真时,我将重定向到其他页面(xyz.jpsx).
现在,在Junit测试中,我想强制执行重定向,但重定向也指向实际存在的jsp.
在Junit内部,我找不到从WEB-INF内部读取文件的方法.我不想硬编码完整路径,因为解决方案不太便携.
我完全理解WEB-INF中的文件不在类路径中,但可能有办法访问这些文件.寻找可在我的集成服务器上运行的便携式解决方案.