我正在寻找一些我认为不会有困难的事情.
我有一个应用程序,我想打包成jar,因为我有~30个依赖项,我希望能够部署单个文件.
我有一些配置文件 - 属性文件和弹簧配置文件,以及我的log4道具文件 - 我希望在jar外部.我想我希望如果我将它们放在与jar相同的目录中,它会在运行时找到它们,但事实并非如此.
在开发过程中,我将这些文件放在我的eclipse项目的类路径的根目录下,应用程序发现它们就好了.我觉得我错过了jar/classpath理论的一些关键方面......
所以我想要的是能够将配置文件和jar放在同一目录中,并让我的应用程序找到配置文件,当我用标准的java -jar运行它时.
有没有一种简单的方法来实现这一目标?
我正在开发一个使用该org.json.JSONObject包的Java项目.但是,每当我在eclipse中使用它时,它都说没有找到这样的包.然而,当我在android上开发即在eclipse中创建一个新的Android项目时,我可以在不做任何事情的情况下使用它(不添加外部JAR和东西),所以我很确定所需的JAR在我的机器上.
但是,在我的整个文件系统上搜索"org.json","*json*jar","json*jar"并没有返回任何内容.
为了解决这个问题,我搜索了高低,但我找不到解决方案.问题如下:我在Tomcat 7服务器上有一个Spring-mvc webapp构建 - 确切地说是7.0.12 - 而且我无法使<mvc:resources>标记正常工作.正如您将在下面看到<mvc:resources>的旧资源文件夹的工作,但我更喜欢在/WEB-INF/web/目录中有资源文件夹.
MediorkoorVOICES的Web-servlet.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com.oudejans.mediorkoorvoices.web" />
<mvc:resources mapping="/resources/**" location="/WEB-INF/web/resources/" />
<mvc:annotation-driven />
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/web/jsp/" />
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<import resource="web/tiles/web-tiles.xml" />
</beans>
Run Code Online (Sandbox Code Playgroud)
文件夹结构:
META-INF
resources (Old resources folder)
- web
- images
- css
- main.css
WEB-INF …Run Code Online (Sandbox Code Playgroud) 我找到了一个在没有使用groovy-all jar文件安装Groovy的系统上运行Groovy脚本的示例.我尝试了以下方法:
java -cp src:.:lib/* -jar lib/groovy-all-2.0.1.jar src/com/example/MyScript.groovy
Run Code Online (Sandbox Code Playgroud)
问题是我的脚本依赖于lib目录中的jar以及位于src/com/examples中的另外两个Groovy脚本文件.当我运行它时,它会抱怨所有这些的import语句.我可以通过使用以下方法在安装了Groovy的系统上运行它:
CLASSPATH="src:.:lib/*" groovy src/com/example/MyScript.groovy
Run Code Online (Sandbox Code Playgroud)
如何使用groovy-all jar以这种方式运行Groovy脚本,并为其提供类路径?
我在设置classpathfor slf4jfor 时遇到问题compiling java files.我尝试了两种方式:1.提供classpath的command line
javac -cp /Users/page/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar src/main/java/com/scg/domain/*.java src/main/java/com/scg/util/*.java
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
src/main/java/com/scg/util/ListFactory.java:8: error: package org.slf4j does not exist
import org.slf4j.Logger;
^
src/main/java/com/scg/util/ListFactory.java:9: error: package org.slf4j does not exist
import org.slf4j.LoggerFactory;
...../long error message
Run Code Online (Sandbox Code Playgroud)
export将CLASSPATH我的env变量.export CLASSPATH=/Users/page/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar
当我尝试时,这也没有帮助并导致同样的错误
javac src/main/java/com/scg/domain/*.java src/main/java/com/scg/util/*.java
Run Code Online (Sandbox Code Playgroud)
我正在尝试将compile所有java文件分成两部分packages.但我需要slf4j在我的课程中. but somehow I am not able to get it work.
感谢
我想在调试模式下运行我的Dropwizard 0.8.5应用程序,其中:
通常我的DW应用程序从命令行运行,如下所示:
java -jar build/libs/myapp.jar server src/test/resources/myapp-local.yml
Run Code Online (Sandbox Code Playgroud)
那么在调试模式(JPDA)中运行它的命令行参数是什么,或者myapp-local.yml完成此操作所需的修改是什么?
我假设我只是设置断点,然后在Eclipse中创建一个新的调试配置,但不确定使用什么参数/配置来设置此配置.有任何想法吗?
这就是我想要做的.我在Web应用程序中使用JPA持久性,但我有一组单元测试,我想在容器外运行.
我的主应用程序位于我的主应用程序persistence.xml的META_INF文件夹中,它在容器(Glassfish)中运行良好.
我persistence.xml在META-INF我的test-classes目录的文件夹中放了第二个.这包含一个单独的持久性单元,我只想用于测试.在eclipse中,我将此文件夹放在类路径中比默认文件夹更高,它似乎工作.
现在,当我直接从命令行运行maven构建并尝试运行单元测试时,将persistence.xml忽略覆盖.我可以META-INF在maven生成的test-classes目录的文件夹中看到覆盖,我希望maven测试使用这个文件,但事实并非如此.我的Spring测试配置覆盖,以类似的方式实现了工作.
我很困惑是否persistence.xml位于类路径中.如果是,我的覆盖应该像弹簧覆盖一样工作,因为maven surefire插件解释 "[测试类目录]将包含在测试类路径的开头".
我错误地预测了persistence.xml文件的位置吗?
我可以(并且已经)在生产persistence.xml文件中创建第二个持久性单元,但是将测试配置放入此生产文件中会感觉很脏.关于如何实现我的目标的任何其他想法都是受欢迎的.
在我看来,在.classpath等文件中添加属性svn:ignore是个好主意.我同时使用Windows(work,ugh)和Linux开发环境,每次与存储库同步时,它都会覆盖我正在处理的任何一台机器上的.classpath.
我尝试在Team Sync透视图中右键单击.classpath文件,但svn:ignore选项显示为灰色.
任何想法我可能:1.从源代码控制中获取此项,2.将其添加到忽略列表?
任何其他文件智能添加到此列表?
我一直试图让ant执行一些用junit编写的测试.任何建议将不胜感激.我对ant和Java都很陌生,所以请耐心等待.
作为一个快速总结,我正在做的是尝试让ant执行一个非常简单的测试,类路径看起来很好,考虑到ant -debug的输出.我在类路径中明确提到类文件的测试时遇到空测试错误.此外,我得到一个ZipException,我不知道那是什么.
这是我正在尝试运行的测试用例:
package testmanagment;
import junit.framework.*;
public abstract class EasyTest extends TestCase
{
public EasyTest(String name)
{
super(name);
}
protected void setUp()
{}
protected void testSeeMee() throws Exception
{
assertTrue(true);
}
protected void testSeeMeetoo() throws Exception
{
assertTrue(true);
}
}
Run Code Online (Sandbox Code Playgroud)
包中有一些测试,这只是为了看看为什么一切都失败了.它失败了ZipException.
这是我的make文件的一小部分:
<property name="src" value="src/"/>
<property name="build" value="build/"/>
<property name="test" value="${build}test/"/>
<property name="testreportsdir" value="${test}reports/"/>
<property name="classdir" value="${build}classes/"/>
<property name="lib" value="lib/"/>
<path id="files-classpath">
<fileset dir="lib/" >
<include name="*.jar"/>
</fileset>
</path>
<path id="tests-classpath">
<path refid="files-classpath"/>
<pathelement location="${classdir}/"/>
</path>
<path id="tests-runpath"> …Run Code Online (Sandbox Code Playgroud) 如果我发出:
$ scala -classpath poi-3.9/poi-3.9-20121203.jar
scala> import org.apache.poi.hssf.usermodel.HSSFSheet
import org.apache.poi.hssf.usermodel.HSSFSheet
Run Code Online (Sandbox Code Playgroud)
一切正常,但如果相反我发出:
$ scala
scala> :cp poi-3.9/poi-3.9-20121203.jar
Added '/home/sas/tmp/poi/poi-3.9/poi-3.9-20121203.jar'. Your new classpath is:
".:/home/sas/tmp/poi/poi-3.9/poi-3.9-20121203.jar"
Nothing to replay.
scala> import org.apache.poi.hssf.usermodel.HSSFSheet
<console>:7: error: object apache is not a member of package org
import org.apache.poi.hssf.usermodel.HSSFSheet
^
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?