Tag: jar

减少外部jar文件大小

我为Java项目开发了一个模块。 该模块依赖于外部库( fastutil )。 问题是, fastutil.jar文件比整个项目本身重14倍(14 MB)。 我只使用库中的一小部分类。 该模块现已完成,未来任何人都不可能扩展它。 有没有办法我只能将相关的类提取到一些fastutil_small.jar以便其他人不必下载所有这些额外的重量?

包括一个jar文件

我编写了一个java程序,它实际上是作为现有命令行程序的gui。 所以基本上我的所有程序都是Runtime.getRuntime().exec(“myprogram parameter”); 。 所以我已经使用Eclipse IDE将我的java源代码导出为可执行jar文件并且它运行良好,但是我确实需要将此myprogram.exe包含在生成的jar文件的目录中以便工作。 现在我正在寻找一种方法将myprogram.exe包含在jar文件中,这样我就可以将它作为单个文件捆绑在一起,使用Eclipse的方法将是首选。

在开发Web应用程序时,我应该在哪里放置外部JAR文件?

我正在Eclipse中使用Java(Servlets / JSP)开发一个动态Web应用程序。 我正在尝试使用外部JAR(我正在使用来自Apache Commons的StringUtils )而且我很困惑我应该把jar放在哪里( /lib , /WEB-INF/lib ?)以及我如何需要配置我的类路径(在Eclipse中)。 我尝试将JAR放在上述两个位置,并通过单击项目属性中的Add JAR将它们加载到类路径中,并且两个解决方案都编译正常,但是给出了运行时错误,如下所示: 严重:Servlet的Servlet.service()UserList在cs236369.hw5.servlets的cs236369.hw5.db.MySqlDbHandler.insert(MySqlDbHandler.java:58)抛出exceptionjava.lang.NoClassDefFoundError:org / apache / commons / lang / StringUtils .UserList.doGet(UserList.java:50)位于org.apache的javax.servlet.http.HttpServlet.service(HttpServlet.java:617)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)。 catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 233)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve .invoke(ErrorReportValve.java:102)atg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler。在java.lang.Thread.run(未知来源)的org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)上的进程(Http11Protocol.java:588) 那么……我如何加载外部JAR? 请注意,我不熟悉外部JAR如何加载Java,VM或Eclipse管理它的方式,所以我很欣赏详细的解决方案。

JAR中的Java Desktop.open(File f)引用文件?

Desktop.open(File f)可以引用位于JAR中的文件吗? 我尝试使用ClassLoader.getResource(String s) ,将其转换为URI,然后从中创建文件。 但是这会导致IllegalArgumentException: URI is not hierarchical 。 URL url = ClassLoader.getSystemClassLoader().getResource(…); System.out.println(“url=” + url); // url is valid Desktop.getDesktop().open(new File(url.toURI())); 可能性是JavaRanch的答案 ,即从JAR中的资源创建一个临时文件 – 不是很优雅。 这是在Windows XP上运行的。

从Jar重新编译Java类

我有一个可执行jar,它有一个类值错误的类文件。 我向作者请求了该文件并更正了该值。 现在我想编译它并将编译后的类文件添加到jar中并运行它。 毫不奇怪,我为jar文件中的自定义对象的引用获得了多个“找不到符号”错误。 我尝试通过引用类路径中的jar文件来编译文件,就像这样 C:/> javac file.java -classpath C:/ folder /其中/ jar /是 但这似乎没有用……我得到了同样的错误 C:/> javac file.java 有没有办法编译这个单独的类以某种方式引用jar中的其他文件? 谢谢。 我在遵循以下一些建议时遇到的错误: javac -classpath C:/jar/location.jar File.java File.java:226:找不到符号 符号:类东西 location:class com.shared.stuffers 东西s1 =新东西(); ^ 在Jar中找到了Stuff类,但javac程序无法看到…我觉得我做错了但不确定在哪里? 谢谢。

执行JAR时java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

我试图使用以下代码连接到我的本地MySQL服务器: dbURL = “jdbc:mysql://localhost:3306:/” + dbname; try{ Class.forName(“com.mysql.jdbc.Driver”); try{ con = DriverManager.getConnection(dbURL, dbuser, dbpass); } catch (SQLException ex){ System.out.println(“ERROR: Could not connection to SQL DB”); con = null; } } catch (ClassNotFoundException e){ System.out.println(“Error: “); e.printStackTrace(); } 然后我明白了 java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 我知道Java无法找到将Java环境连接到MySQL数据库的正确驱动程序。 这是在Windows 7系统上编译并移植到Ubuntu 11.04系统。 有没有一种特殊的方法可以使用特定的类路径运行Java程序,例如: java -cp /usr/share/java/mysql-connector-java.jar program.jar 当我尝试它时,这不起作用。

将文件列在当前JAR文件的目录中

我正在JAVA制作一个游戏,我想在我的jar中的某个目录中找到一个文件列表,这样我就可以确保在游戏中使用这些类的列表。 例如,在我的jar中我有一个目录 mtd/entity/creep/ 我想使用jar中另一个类的java代码获取该目录中所有.class文件的列表。 这样做的最佳代码是什么?

使用Maven将runnable .jar中的本机依赖项捆绑在一起

我有一个在Maven中管理的项目,它有一些本机依赖项 ( LWJGL )。 一切都在开发中工作正常,但现在我想设置Maven,以便它将构建一个可以重新分发的可运行的.jar文件。 特别是,我希望用户可以非常轻松地运行应用程序,而无需使用库路径或解压缩本机库等。 目前我能够构建一个包含所有依赖项的.jar文件,但如果我运行它(不出所料)我得到一个不满意的链接错误: Exception in thread “main” java.lang.UnsatisfiedLinkError: no lwjgl in java.libr ary.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at org.lwjgl.Sys$1.run(Sys.java:73) at java.security.AccessController.doPrivileged(Native Method) at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) at org.lwjgl.Sys.loadLibrary(Sys.java:95) at org.lwjgl.Sys.(Sys.java:112) at org.lwjgl.opengl.Display.(Display.java:132) at glaze.TestApp.start(TestApp.java:10) at glaze.TestApp.main(TestApp.java:31) 显然,我可以通过手动安装本机库并使用java -Djava.library.path=/path/to/libs运行jar来使其工作,但这不是我期望用户做的事情。 这是pom.xml,如果它是相关的: https : //github.com/mikera/glaze/blob/master/pom.xml 可以设置Maven,以便它创建一个包含本机依赖项的可运行.jar,并在双击时成功运行?

如何将系统属性传递给jar文件

我有一个主类,它期望我使用-D选项传递的某些属性。 我可以通过将它们作为VM选项发送到我的IDE中来访问它。 我使用Maven将此应用程序打包到一个jar文件中,当我尝试以下操作时: java -jar myjar.jar -Denviroment=dev 要么 java -jar myjar.jar “-Denvironment=dev” 环境系统属性没有被提升。 有关正在发生的事情的任何指示?

Jar文件命名约定

是否存在命名jar文件的行业标准约定?