您是否可以告诉我,如果可以的话,如何将Scala应用程序导出到可以直接在JVM中运行的普通可运行JAR?
谢谢
对于学校数据库项目,我们正在制作数据库程序(用户GUI和数据库).使用Microsoft Access 2010我创建了数据库并使用一些示例数据填充它,并将其保存为.mdb格式并将其放在我的项目文件夹中.
在eclipse中运行时,以下代码工作正常,连接甚至检索查询.但是我发现我无法将代码导出到jar并运行它(这是项目所需的,在CD或闪存驱动器上为它们提供程序的工作副本),而且我也无法移植代码到Netbeans让它工作,以及尝试在Linux机器上编译.
我认为这是包含驱动程序或尝试使用Microsoft访问的问题.运行jar或在Netbeans上运行时得到的错误在代码下方给出.所以我要么问我如何包含驱动程序以使程序可移植,或者我怎么能解决这个问题呢?
提前致谢
import java.sql.*;
public class JDBCTest {
static Connection connection;
static Statement statement;
public static void main(String args[]){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=TLDATABASEDBM.mdb";
connection = DriverManager.getConnection( database ,"","");
buildStatement();
executeQuery();
}catch(Exception e){
e.printStackTrace();
System.out.println("Error!");
}
}
public static void buildStatement() throws SQLException {
statement = connection.createStatement();
}
public static void executeQuery() throws SQLException {
boolean foundResults = statement.execute("SELECT * FROM tblStaff AS x WHERE City='Calgary'");
if(foundResults){
ResultSet set = statement.getResultSet(); …Run Code Online (Sandbox Code Playgroud) 我正在NetBeans中编写一个简单的Swing应用程序,并且是第一次在Ubuntu机器上执行此操作.
众所周知,NetBeans会自动为"设为主"的项目创建可执行JAR.
在Windows上,您可以双击可执行JAR,它会自动调用JRE并运行应用程序.在Ubuntu中,双击.jar文件会导致在归档管理器中打开该文件.为了运行我的JAR,我要么右键单击它并选择"Open with OpenJDK Java 6 Runtime",要么从命令行启动它.
从命令行我没有任何问题.但是,当我尝试从右键单击菜单启动它时,我收到一条错误,内容如下:
文件MySwingApp.jar未标记为可执行文件...
所以我有两个问题:
谢谢你的任何有用的建议!
我有一个项目,我正在使用Java + Scala + Slick2D.
从日食开始,项目本身运行良好.但是当我尝试制作一个jar文件时,它只是拒绝工作.这是我在尝试将其导出为Runnable jar时遇到的错误:

如果我尝试导出只是一个Jar文件,它将无法找到主类:

当然,游戏中有一个主要类.TicTacGame.但它拒绝承认它.我尝试用简单的Hello World项目创建一个可执行文件,它运行正常.它甚至可以检测到主类.为什么Eclipse在这种情况下没有检测到主类?
PS:我还尝试提取创建的.jar文件,编辑manifest.mf文件以添加Main-Class:game.TicTacGame,输入两个新行并重新创建jar.然后它给了我一个损坏的jar文件错误.
我在我的智慧结束,并希望在这方面有任何帮助.我正在使用带有Eclipse Juno,Java 1.7和Scala 2.10的Windows 7 x64
编辑:Main类是Java
所以我已经使用one-jar在jar文件中打包了我的类和它们的依赖项(apache commons cli)(这很容易做到,请参阅命令行方法部分).现在我很好奇我是否可以使用类外的Junit jar在jar中运行java测试类.所以里面测试类的路径sw.jar是:
sw.jar\main\sw.jar\uoa\di\ys11\hw2\TestSmithWaterman.class
Run Code Online (Sandbox Code Playgroud)
(这main\是一个罐子的事情).我尝试过各种变化:
java -jar -cp lib/junit.jar org.junit.runner.JUnitCore uoa.di.ys11.hw2.TestSmithWaterman
Run Code Online (Sandbox Code Playgroud)
没有运气 - 所以命令行会是什么?或者我是否需要以某种方式修改单罐清单?
编辑/boot-manifest.mf::
Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: uoa.di.ys11.hw2.Hw2
Run Code Online (Sandbox Code Playgroud)
而/META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Created-By: 1.7.0_09 (Oracle Corporation)
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: uoa.di.ys11.hw2.Hw2
Run Code Online (Sandbox Code Playgroud) 我有一个TestNG项目.没有任何主类,目前它正在运行,如"Run As TestNG".
我想将它导出为runnable jar或jar,这样任何人都可以从命令行命中命令,测试用例开始运行.
有人可以帮我解决这个问题吗?或建议任何其他方式以可运行的形式提供代码...
我没有使用蚂蚁或maven.
谢谢
使用可执行JAR文件时,我无法指定Log4j2配置文件位置.如果我将所有JAR分开,它可以正常工作,但是当我尝试将它们组合成一个可执行的JAR文件时,由于某种原因,log4j2.xml文件不会从命令行中获取.
我已经尝试了这两种指定位置的方法:
java -Djava.libary.path=..\bin -cp ..\config -jar MyApplication.jar
java -Djava.libary.path=..\bin -Dlog4j.configurationFile=..\config\log4j2.xml -jar MyApplication.jar
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.我还尝试将包含配置文件的目录添加到JAR清单文件中的类路径中:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.7.0_21-b11 (Oracle Corporation)
Main-Class: com.abc.MyApplication
Class-Path: ../config/
Run Code Online (Sandbox Code Playgroud)
我也没有成功使用这种方法.我有什么想法可能做错了吗?
在此先感谢您的帮助!
编辑
啊,我相信我误解了这个问题.最初,这是我在命令行输出中看到的错误:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Run Code Online (Sandbox Code Playgroud)
但是在我改变事物的某个时刻,错误消息发生了变化而我没有意识到这一点:
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
Run Code Online (Sandbox Code Playgroud)
因此,我想通了,是即使可执行的JAR我是建设了包括log4j-core-2.1.jar和log4j-api-2.1.jarJAR文件在它的内部,并在MANIFEST文件中的类路径中,有一个问题.我编写我的ant文件以将库组合到我正在创建的单个JAR中的方式是成功复制目录和类文件,但由于某些原因没有复制其他类型,这显然也是必要的(例如Log4j-config …
我想要做的是构建一个JAR包含我的项目的可执行文件.我已经将它的依赖项包含在它旁边,也包含在JAR文件中,所以我的目录列表看起来像这样:
〜/项目/ Java的/ web应用程序输入/输出:
网络app.jar
dependency1.jar
dependency2.jar
dependency3.jar
我知道并确信我的问题不是来自依赖关系,因为我的应用程序正常运行,直到我启动Jetty嵌入式的那一刻.
我用来启动Jetty的代码是这样的:
public class ServerExecutionGoal implements ExecutionGoal {
private final static Logger logger = Logger.getLogger(ServerExecutionGoal.class);
private WebAppContext getWebAppContext() throws IOException {
WebAppContext context = new WebAppContext();
System.out.println("context = " + context);
context.setResourceBase(new PathMatchingResourcePatternResolver().getResource("classpath:/webapp").getURL().toExternalForm());
context.setContextPath("/");
context.setLogger(new StdErrLog());
return context;
}
@Override
public void execute(Map<String, Object> stringObjectMap) throws ExecutionTargetFailureException {
logger.info("Instantiating target server ...");
final Server server = new Server(8089);
final ContextHandlerCollection handlerCollection = new ContextHandlerCollection();
try {
handlerCollection.setHandlers(new Handler[]{new …Run Code Online (Sandbox Code Playgroud) 我一直在使用Opencv 2.4.5和Java构建一个应用程序,现在想分发应用程序.使用以下内容加载库:
static{
System.loadLibrary("opencv_java245");
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.但是,在导出时,从jar运行时它不起作用:
java -jar build1.jar
Run Code Online (Sandbox Code Playgroud)
opencv_java245.jar文件作为用户库包含在内,并连接了一个本机文件(libopencv_java245.dylib).当运行从Eclipse生成的可执行jar时,我得到下面的UnsatisfiedLinkError,尽管在eclipse中编译/运行正常.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java245 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at com.drawbridge.Main.<clinit>(Main.java:12)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Run Code Online (Sandbox Code Playgroud)
有人知道在罐子里打包OpenCV的简单方法吗?
更新:我现在已经筋疲力尽了.我可以将库添加到我的构建路径(而不是使用System.loadLibrary),这可以在eclipse中使用,但不能在jar中打包.我已经尝试了一切.我还检查了我正在尝试加载的动态库的类型 - 它是
Mach-O 64-bit x86_64 dynamically linked shared library
Run Code Online (Sandbox Code Playgroud)
这似乎应该工作正常.我用-D64和-D32来测试并得到两者相同的结果.
我可以轻松地在命令行中运行以下命令来转换 xml 文件:
java -jar saxon9he.jar -o:outputfile.xml data.xml transform.xslt
Run Code Online (Sandbox Code Playgroud)
我想从一个 java 文件中得到完全相同的结果,这样我就可以在我正在制作的程序的一部分中使用它。我已将 saxon9he.jar 放在构建路径中,但如何在命令行之外调用相同的命令?