多年来,在32位系统上,我从未遇到过问题.为什么我不能在Windows Server 2008上将64位Java ODBC驱动程序与Access数据库一起使用?64位系统上的ODBC驱动程序是用32位代码写的吗?这是我看到的错误,使用64位JDK1.6.018:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
.....
Run Code Online (Sandbox Code Playgroud)
我怀疑Access驱动程序是32位,因为它没有显示在Windows的64位ODBC控制面板中.在ODBC控制面板的"驱动程序"选项卡中只能看到两个64位驱动程序(对于SQL Server).
那么,我该怎么办?我宁愿不必使用SQL Server和JDBC Type-4驱动程序(但那将是我的最后手段).
我刚从命令行创建了一个新的SQLite数据库,并且我有一个到SQLite数据库的ODBC连接.
如果我发出查询,默认情况下,同步似乎是"开启",这实际上是在减慢INSERT性能的大时间.
如何在PRAGMA synchronous = OFF 不需要发送SQL命令的情况下将SQLite数据库设置为默认值?我可以创建一个.INI文件或其他东西来启用它吗?
有没有办法创建一套测试方法,而不仅仅是测试类?
我想组建一个测试套件,它只运行测试类中的特定测试方法.我没有从我有限的junit知识和搜索网络中看到这样做的方法.
使用TestNG,是否可以使用如下方法动态更改测试名称?
@Test(testName = "defaultName", dataProvider="tests")
public void testLogin( int num, String reportName )
{
System.out.println("Starting " + num + ": " + reportName);
changeTestName("Test" + num);
}
Run Code Online (Sandbox Code Playgroud) 是否可以向GROUP BY添加标识列,以便每个副本都有一个标识号?
我的原始数据如下所示:
1 AAA [timestamp]
2 AAA [timestamp]
3 BBB [timestamp]
4 CCC [timestamp]
5 CCC [timestamp]
6 CCC [timestamp]
7 DDD [timestamp]
8 DDD [timestamp]
9 EEE [timestamp]
....
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
1 AAA 1
2 AAA 2
4 CCC 1
5 CCC 2
6 CCC 3
7 DDD 1
8 DDD 2
...
Run Code Online (Sandbox Code Playgroud)
解决方案是:
CREATE PROCEDURE [dbo].[RankIt]
AS
BEGIN
SET NOCOUNT ON;
SELECT *, RANK() OVER(PARTITION BY col2 ORDER BY timestamp DESC) AS ranking
FROM MYTABLE;
END
Run Code Online (Sandbox Code Playgroud) 我使用Eclipse的"Export - > Java - > Runnable Jar File"函数生成了一个非常简单的可运行jar文件.我的HelloWorld类看起来像这样:
import javax.swing.JFrame;
public class HWorld extends JFrame {
public static void main(String[] args) {
new HWorld();
}
public HWorld() {
this.setSize(200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Hello World!");
this.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在生成.jar文件后,使用命令"java -jar HWorld.jar"从命令行运行正常
但是,当我尝试自己执行jar(据说应该可以工作)时,我得到以下错误,我不知道为什么:
E:\Eclipse\workspace>HWorld.jar
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Eclipse\workspace\HWorld/jar
Caused by: java.lang.ClassNotFoundException: E:\Eclipse\workspace\HWorld.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: E:\Eclipse\workspace\HWorld.jar. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我的清单看起来像这样:
Manifest-Version: 1.0 …Run Code Online (Sandbox Code Playgroud) 我有很多与jconsole.exe和JVisualVM.exe经验,在JDK1.6及以上已连接数千次从Windows JVM到Windows JVM通过JMX.remote另一台机器上,但是当我尝试监视失败一个在Linux主机上运行的java实例(来自Windows主机,我在redhat上尝试了JMX监听器,在Amazon EC2上尝试了SUSE).我也尝试使用jconsole.exe并得到类似的错误.
是否有任何人可以想到的原因,为什么这种JMX连接会有问题.我可以尝试任何想法吗?有没有人"实际"做到这一点,可以说如果我坚持下去会有效吗?
我从JVisualVM获得的错误(在远程连接尝试中)是这样的:
"Cannot connect using service:jmx:rmi:///jndi/rmi://<jmx service ip>:8001/jmxrmi"
Run Code Online (Sandbox Code Playgroud)
我的远程JMX服务配置是这样的:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8001
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.hostname=<jmx service ip>
Run Code Online (Sandbox Code Playgroud)
在此链接中发现了类似的问题,但它没有回答我的问题.
我确认"iptables"没有作为服务启用而且没有打开,所以我没有成像,有任何类型的防火墙阻塞.此外,Windows和Linux机器都在10.0.0.0私有内部子网上.我能够telnet到端口8001来验证它的存在,并在linux机器上监听它(netstat -ap).
使用此代码:
xml = new groovy.xml.MarkupBuilder()
xmldata = xml.Plugins(nextid: '10') {
Target(name: 'default.auth') {
Port(protocol: 'https') {
mkp.yield 8080
}
}
}
Run Code Online (Sandbox Code Playgroud)
生成此输出:
<Plugins nextid='10'>
<Target name='default.auth'>
<Port protocol='https'>8083</Port>
</Target>
</Plugins>
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法用双引号生成这样的输出?
<Plugins nextid="10">
<Target name="default.auth">
<Port protocol="https">8083</Port>
</Target>
</Plugins>
Run Code Online (Sandbox Code Playgroud) 如何配置 Gradle 以将主类和测试类包含到我的 .jar 存档中。目前在build/libs 目录中构建的 .jar缺少我的测试类。 在 Gradle 将它们编译到project-root/bin/com/package/之后,它只包含来自project-root/src/main/java/com/package 的类在 .jar 中。
jar {
manifest {
attributes 'Implementation-Title': title, 'Implementation-Version': version, 'Main-Class': mainTestClass
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,虽然 Gradle 将编译的测试类与主类一起放入project-root/bin/com/package/ 中,但奇怪的是它决定不将它们放入 .jar 存档中。那么,如何让 .jar 也包含最初来自project-root/src/test/java/com/package/ 目录中的测试类 ?
这是我需要帮助的build.gradle 文件。
这应该是最简单的问题,但我在从Gradle测试任务访问System变量时遇到问题.由于我确信这种语法是正确的但它不起作用,因此我必须要做一个错字.我希望有人可以帮我识别下面这段代码的问题?
// my gradle build says the following line is a deprecated method
//systemProperties = System.getProperties()
// this line always returns 1 on a multiprocessor system
println 'NUMBER_OF_PROCESSORS is ' +
System.getProperty( "NUMBER_OF_PROCESSORS", "1" )
// this line also always returns the default for TMP var
println 'TMP is ' + System.getProperty( "TMP", "C:\\Temp" )
Run Code Online (Sandbox Code Playgroud)
注意:我也在这里问过这个问题,但由于它是一个封闭的线程,我不确定我是否会在那里得到答案.此外,我已经彻底阅读了该文档,但它没有帮助.
我试过这些,但也失败了:
test {
println ""
ENV = System.getProperties()
println "TMP is " + ENV['TMP']
println "" …Run Code Online (Sandbox Code Playgroud)