小编Kry*_*der的帖子

使用Ant组合文件集

我在Ant中定义了两个不同的文件集,如下所示:

<fileset id="fileset1" dir="${classes.dir}">
</fileset>

<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class">
</zipfileset>
Run Code Online (Sandbox Code Playgroud)

我想创建第三个文件集,它是上述两个文件集的并集

<fileset id="merged">
</fileset>
Run Code Online (Sandbox Code Playgroud)

谁能告诉我怎么做?甚至可以做那样的事情吗?提前致谢!

ant

22
推荐指数
2
解决办法
1万
查看次数

运行带有重音字符的BAT/CMD文件

我有一个Windows批处理文件,其中包含在路径包含重音字符的位置执行EXE文件的指令.以下是批处理文件的内容.

@echo off
C:\español\jre\bin\java.exe -version
Run Code Online (Sandbox Code Playgroud)

C:\español\ jre\bin\java.exe - 此路径存在且正确.我可以直接在cmd.exe上运行此命令.但是当我从bat/cmd文件运行命令时,它无法说"系统找不到指定的路径"

解决此问题的一种方法是将代码页设置为1252(适用于我).但我担心我们必须为任何非英语语言环境设置代码页,并确定使用哪个代码页非常困难.

有没有其他方法来解决这个问题?也许是命令行选项或其他?

batch-file codepages

14
推荐指数
4
解决办法
3万
查看次数

关闭derby网络服务器不会删除db.lck

我正在尝试使用默认端口从我的Java应用程序启动网络服务器模式下的Derby.服务器启动成功.现在我尝试连接到服务器上名为"myDB"的数据库.建立连接并成功创建db.lck.然后,我做了几个事务,提交并优雅地关闭连接.我看到db.lck仍在那里.然后我关闭了网络服务器.我希望在所有这些操作结束时删除db.lck文件.但它仍然存在.(PS:操作系统是Windows)

以下是代码:

1)启动服务器:

System.setProperty("derby.system.home", "C:\\SI\\testDerby");
System.setProperty("derby.drda.traceDirectory", "C:\\SI\\trace");
System.setProperty("derby.drda.traceAll", "true");
System.setProperty("derby.drda.logConnections", "true");
System.setProperty("derby.connection.requireAuthentication", "false");

serverHandle = new NetworkServerControl();
// Write server console messages to system output
serverHandle.start(new PrintWriter(System.out));
Run Code Online (Sandbox Code Playgroud)

2)连接到DB

final String PORT = 1527;
String driver = "org.apache.derby.jdbc.ClientDriver";
String dbName = "myDB";
String connectionURL = "jdbc:derby:" + "//localhost:" 
            + PORT  + "/" + dbName + ";create=true";
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(connectionURL);
Statement stmt = conn.createStatement();
boolean success = stmt.execute("DROP TABLE USERS");
PreparedStatement statement = conn.prepareStatement("CREATE TABLE USERS (id BIGINT not null, …
Run Code Online (Sandbox Code Playgroud)

java database derby

7
推荐指数
1
解决办法
3923
查看次数

从一个线程开始杀死Java进程

我开发了一个JSP Web应用程序,在每次请求时都会生成一个新的Java Thread.在每个新生成的线程中,我使用Runtime.exec()创建一个Process,并将进程对象存储在线程中的实例变量中.我有一个要求,我必须杀死创建的子进程,并停止线程.所以,我在线程和overridden方法中覆盖了中断方法,我在实例变量中已经存储过的Process对象上调用了destroy().以下是代码:

public class MyThread extends Thread {
    private Process subprocess;

    @Override
    public void run() {
        subprocess = Runtime.getRuntime().exec("myprocess.exe");
        subprocess.waitFor();
        /*
            Some more statements
        */
    }

    @Override
    public void interrupt() {
        if(subprocess!=null) {
            System.out.println("Destroying Process");
            subprocess.destroy();
        }
        super.interrupt();
    }
}
Run Code Online (Sandbox Code Playgroud)

覆盖中断方法是不合法的吗?重要的是我在中断创建它的线程之前杀死创建的进程.我看到线程确实被中断,因为waitFor()之后的语句没有被执行.但是,destroy()不起作用(但被调用),即使我在完成之前调用interrupt()方法,创建的"myprocess.exe"也会完成执行.有人可以帮我解决这个问题吗?我错过了什么?

提前致谢

java multithreading process interrupt

1
推荐指数
1
解决办法
4396
查看次数