我一直在为我的Spring MVC项目需要的所有jar文件执行此操作:
call mvn install:install-file -DgroupId=vegetables -DartifactId=potatoes -Dversion=1.0 -Dfile=vegetables-1.0.jar -Dpackaging=jar -DgeneratePom=true
Run Code Online (Sandbox Code Playgroud)
最近我必须超出一些限制,你可以在pom.xml文件中列出多少依赖项,因为我收到一个错误说:
Your command line is too long
Run Code Online (Sandbox Code Playgroud)
所以我删除了pom.xml我的项目不再使用的一些依赖项,我能够再次使用maven运行项目.
我的问题是,我应该将所有jar文件安装到我的Maven存储库中,就像我到目前为止一样吗?或者我应该将其中一些放入WEB-INF/lib目录?
这里的最佳做法是什么?
我创建了一个项目,从.properties文件中读取一些配置
public class PreferenceManager {
private int refreshTime;
private String[] filters;
Properties properties ;
public PreferenceManager() throws FileNotFoundException, IOException
{
properties = new Properties();
properties.load(ClassLoader.getSystemResourceAsStream ("preferences.properties"));
}
public void save() throws IOException, URISyntaxException
{
properties.setProperty("REFRESH_TIME", String.valueOf(refreshTime));
String filtersStr = "";
if(filters!= null){
for(String str : filters)
{
if((str == null)||(str.isEmpty())) continue;
filtersStr+= str.toUpperCase()+",";
}
}
properties.setProperty("FILTERS", filtersStr);
URI uri = ClassLoader.getSystemResource("preferences.properties").toURI();
File f = new File(uri);
properties.store(new FileOutputStream(f), null);
}
}
Run Code Online (Sandbox Code Playgroud)
一切都很好.现在我需要创建一个JAR文件.我需要知道如何让这个JAR文件从包含它的文件夹中读取这个属性文件,因为当属性文件在JAR中时我可以读它但我可以在上面写(例外:URI不是hirarchal)
所以我需要你的帮助.
谢谢
我试图在代码中动态加载MySQL jar,但我不确定Windows路径名的格式.我在下面使用的是正确的,从拇指驱动器加载.jar?
URL u = new URL("jar:file:G:/mysql-connector-java-5.1.15.jar!/");
URLClassLoader ucl = new URLClassLoader(new URL[] { u });
Run Code Online (Sandbox Code Playgroud)
现在,这与您在Java教程中看到的传统路径不同:
URL url = new URL("file:/g:/mysql-connector-java-5.1.15.jar");
Run Code Online (Sandbox Code Playgroud)
对于答案,我正在寻求澄清; 我想我只是被"jar:file:"的东西和"!"搞糊涂了.在末尾.
如何使用Maven 将一个JRE库(例如,rt.jar)嵌入到我的WAR中?
有maven插件/命令吗?
我有一个奇怪的问题,我无法理解......我有一个简单的HelloWorld jar,我在Eclipse中构建了Apache Loggingsjar,它的类路径就是jar.我写了一个运行jar的脚本:
#!/bin/sh
export CLASSPATH=lib/*:$CLASSPATH
java -jar HelloWorld.jar
Run Code Online (Sandbox Code Playgroud)
这里的目录结构是一个主目录,其中包含一个HelloWorld.jar和一个lib子目录commons-logging-1.1.1.jar.
运行此脚本工作正常.但是,当我将其HelloWorld.jar放入lib目录(即在一个地方包含所有JAR)并执行时java -jar lib/HelloWorld.jar,我得到:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Run Code Online (Sandbox Code Playgroud)
错误.为什么?!?!?!?!
我问这个是因为我在OSX上使用JarBundler为HelloWorld应用程序创建了一个Application包,并在MacOS目录中放置了一个修改过的脚本,而所有的lib都放在了Resources/Java目录中.修改后的脚本版本是:
#!/bin/sh
RESOURCE_DIR=$(cd "../Resources"; pwd)
export CLASSPATH=$RESOURCE_DIR/Java/*:$CLASSPATH
java -jar $RESOURCE_DIR/Java/HelloWorld.jar
Run Code Online (Sandbox Code Playgroud)
而且我得到了与上面相同的错误我真的很感激任何帮助理解为什么我不能这样做和/或如何解决它?
我已经尝试在eclipse中打开类文件,我已经从我导入到项目中的jar中复制了粘贴,并且我收到了第一个错误:
org.eclipse.core.runtime.CoreException:类文件不在类路径中.
显然我已经将类文件错误地包含在我的项目中.我需要使用这个类文件来访问Java applet.建议请
当我尝试在我的网站上查看特定页面时,它在浏览器中显示为空白但在Eclipse中从tomcat生成一条长错误消息.
即将出现的页面不是我已修改过的页面.我修改了一些其他页面并且它们工作正常但是现在我已经修改了它们,这个特定的页面在访问它时会产生错误.
错误很长,所以我只想发布我认为重要的部分.如果需要更多错误,请告诉我.
我已经阅读了错误,但我不确定服务器究竟是在试图告诉我错误.
希望有人能够指出我正确的方向.提前谢谢你.
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:tunestore' did not find a matching property.
Run Code Online (Sandbox Code Playgroud)
Nov 22, 2011 6:25:28 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/root/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/tunestore/WEB-INF/lib/servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (com.tunestore.util.DBUtil).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)
Nov 22, 2011 6:25:37 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained …Run Code Online (Sandbox Code Playgroud) 这可能看起来很奇怪,但我需要永远解释为什么我需要它......
我需要的是一种在JAR文件中使用命令提示符或在我的Python程序中编辑预先存在的Java .class文件的方法.一旦用户按下按钮,我需要它自动发生.
我完全不知道如何做到这一点,或者如果可能的话.
我正在用Java做一个小游戏。对于这个游戏,我只是添加了声音。所以我想把我所有的图像和音频文件放在罐子里。对于图片,这很简单:
new ImageIcon(Main.class.getResource("images/machgd2.png")).getImage()
Run Code Online (Sandbox Code Playgroud)
但是对于音频,仅当我在Eclipse中运行程序时才起作用,而不能从jar中运行。我用:
File soundFile = new File(Main.class.getResource(filename).getFile());
Run Code Online (Sandbox Code Playgroud)
那么如何从.jar文件中获取此文件?
更新:
好的,感谢Andrew!为了播放声音,我使用了一个在网上找到的类,然后发现该类仅使用File来获取AudioInputStream,因此我删除了File。
我有一个运行jarFile的C#类库
string args="java -jar jar.jar...";
ProcessStartInfo startInfo = new ProcessStartInfo("java.exe", args);
Process runProc = Process.Start(startInfo);
Run Code Online (Sandbox Code Playgroud)
但是当从应用程序使用dll时,我发现我必须将jar文件放在应用程序的工作目录中或指定完整路径.
我不喜欢这两个选项 - absulote路径都不好,并要求用户将jar文件复制到他的工作目录以便使用dll并不舒服.
是否有一些替代方法,将jar文件嵌入到类库中?