小编Jul*_*les的帖子

当服务器时区不是UTC时,从Java中检索来自MySQL的UTC DATETIME字段

我正在尝试使用Java和MySQL编写代码以与第三方开发的数据库进行互操作.此数据库具有一个字段,该字段将字段中的时间戳存储DATETIME为UTC日期.运行数据库和客户端的服务器的时区设置为非UTC区域(Europe/London),因此默认情况下,时间戳的读取不正确,就像它是本地时间一样.我正在尝试编写代码以将其读回UTC.

我在这里已经阅读了几个类似的问题,但是他们都没有一个对我有用的答案:

不幸的是,我无法更改任何服务器设置,所以我尝试使用连接的"time_zone"变量来设置数据库服务器使用UTC和可选Calendar参数ResultSet.getTimestamp来检索日期,但这对结果没有影响.这是我的代码:

private static final Calendar UTCCALENDAR = Calendar.getInstance (TimeZone.getTimeZone (ZoneOffset.UTC));
public Date getDate ()
{
    try (Connection c = dataSource.getConnection ();
         PreparedStatement s = c
             .prepareStatement ("select datefield from dbmail_datefield where physmessage_id=?"))
    {
        fixTimeZone (c);
        s.setLong (1, getPhysId ());
        try (ResultSet rs = s.executeQuery ())
        {
            if (!rs.next ()) return null;
            return new Date (rs.getTimestamp(1,UTCCALENDAR).getTime ());    // do not use SQL timestamp object, as …
Run Code Online (Sandbox Code Playgroud)

java mysql datetime date jdbc

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

嵌入Jetty 9 - jetty-all.jar在哪里?

我正在尝试将Jetty 9嵌入到我的项目中,而http://www.eclipse.org/jetty/documentation/current/advanced-embedding.html#jetty-helloworld上的教程建议我需要一个名为"jetty-的文件". all.jar",但我似乎无法在下载分发中找到它.我从哪里得到它?我不是在使用maven.

java jetty

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

如何使用免费工具查找classloader泄漏?

我正在调查Tomcat/Spring/Hibernate应用程序中的内存泄漏,这会导致在几次重新部署后导致可怕的"out of permgen"错误.我已经下载了plumbr的免费版本,这证实我有一个classloader泄漏,但不幸的是我买不起499美元来获得详细的报告.是否有免费工具可以执行等效分析并告诉我在哪里寻找它?或者我可以调查此类泄漏的其他一些常见原因?

到目前为止我采取的步骤:

  • 确保在上下文关闭时取消注册我的JDBC驱动程序
  • 手动关闭MySQL驱动程序的AbandonedConnectionCleanupThread(每个Tomcat Guice/JDBC内存泄漏)

还有什么可能导致泄漏?

java spring tomcat memory-leaks hibernate

13
推荐指数
2
解决办法
2921
查看次数

从"Android私有库"中删除不在我项目的libs文件夹中的项目

场景是这样的:Eclipse Juno,ADT 22.这个android项目的创建依赖于另一个Eclipse项目(不是一个简单的Java项目),它导出了对另一个库的依赖.我已经从依赖项列表中删除了Java项目,但导出的库依赖项仍保留在项目构建路径的Android私有库部分中,我无法弄清楚如何删除它.

有任何想法吗?

(供参考,这是构建路径的样子:

java build path对话框显示库

我想要摆脱的lib是"simple-xml-2.6.2.jar",因为我已经转而使用JSON而不是XML而不再需要它.项目"bincomodel"不再是该项目的依赖项; 我在"项目"选项卡上删除了它.)

eclipse android adt

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

单元测试Activity.startService()调用?

试图编写我的第一个Android-by-TDD应用程序(我已经编写了一些没有TDD的小型Android应用程序,因此熟悉环境),但我似乎无法理解如何编写我的第一个测试.

场景:

我有一个活动,TasksActivity和一个服务,TasksService.我需要测试TasksActivity在其onStart()方法中启动TasksService.

我写的测试是这样的:

public class ServiceControlTest extends ActivityUnitTestCase<TasksActivity>{
public ServiceControlTest() {
    super(TasksActivity.class);
}

public void testStartServiceOnInit () {
    final AtomicBoolean serviceStarted = new AtomicBoolean(false);
    setActivityContext(new MockContext() {
        @Override
        public ComponentName startService(Intent service) {
            Log.v("mockcontext", "Start service: " + service.toUri(0));
            if (service.getComponent().getClassName().equals (TasksService.class.getName()))
                serviceStarted.set(true);
            return service.getComponent();
        }
    });
    startActivity(new Intent(), null, null);
    assertTrue ("Service should have been started", serviceStarted.get());
}           
}
Run Code Online (Sandbox Code Playgroud)

在TasksActivity中的onCreate()方法中,我有:

    startService(new Intent(this, TasksService.class));
Run Code Online (Sandbox Code Playgroud)

我也试过了

    getBaseContext().startService(new Intent(this, TasksService.class));
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下都不会调用我的MockContext的startService方法.有没有办法设置拦截这种方法?我真的不必开始包装基本的Android API以执行这样的基本测试......

tdd junit android unit-testing android-service

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

Android单元测试类的"private static final"成员将值更改为null

我在Android项目中有一个JUnit测试用例,其中包含如下所示的代码:

private static final URI TEST_RESOURCE_URL = TasksService.TASKLIST_RESOURCELIST_URL.resolve("task/test.task");

public void setUp () {
    Log.i("Test", "TEST_RESOURCE_URL=" + TEST_RESOURCE_URL);
}
Run Code Online (Sandbox Code Playgroud)

此测试类具有多个测试方法,其中一些参考(但不尝试修改)此常量的值.但是,当我运行这些测试(Android 2.2.2)时,所有这些测试但第一个测试失败了,logcat向我展示了这个:

03-03 18:56:41.791: I/Test(12008): TEST_RESOURCE_URL=http://apate.meridiandigital.net/tasks/task/test.task
03-03 18:56:42.101: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.131: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.151: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.281: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.311: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.341: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.361: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.391: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.391: I/Test(12008): TEST_RESOURCE_URL=null
Run Code Online (Sandbox Code Playgroud)

静态最终字段如何改变这样的值?我该如何防止这种情况发生?还有其他可能发生的情况吗?

---编辑1

我现在已经将代码修改为一个可以包含在其中的较小示例.见下文:

public class MyService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}


public …
Run Code Online (Sandbox Code Playgroud)

java junit android

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

Java Streams:预先排序的流上的distinct()?

正如在这个问题中所讨论的那样,distinct()当运行它的流被运行时知道时,实现能够使用更有效的算法.如果我们知道流是排序的(例如,因为它来自外部预先排序的数据源,例如带有order by子句的SQL查询)但是没有标记为这样,我们如何才能获得类似的结果?有一个unordered()操作可以删除排序标志,但据我所知,没有办法告诉系统数据是在外部排序的.

java performance java-stream

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

使用sun.misc.Unsafe获取Java数组项的地址?

我正在努力理解sun.misc.Unsafe的文档 - 我想因为它不适合一般用途,没有人真的为让它可读而烦恼 - 但实际上我真的需要一种方法来找到一个元素的地址一个数组(以便我可以将指针传递给本机代码).有没有人有任何工作代码这样做?它可靠吗?

java memory pointers unsafe native

7
推荐指数
2
解决办法
5719
查看次数

尽管在user-config.jam中有定义,但仍无法识别工具集的交叉编译

我尝试从运行Linux的PC上交叉编译boost 1.52.0 for freescale ARM处理器板.

基于交叉编译boost的(相当简单的)文档,我已经设置了一个user-config.jam文件,其内容如下:

using gcc : arm : /mnt/lv1/src/ROM1210/cross_compiler/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-g++ ;
Run Code Online (Sandbox Code Playgroud)

然后我跑了

bootstrap.sh --prefix=`realpath ../tools`
./b2 toolset=gcc-arm
Run Code Online (Sandbox Code Playgroud)

结果是:

/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/tools/gcc.jam:107: in gcc.init from module gcc
error: toolset gcc initialization:
error: version 'arm' requested but 'g++-arm' not found and version '4.3.2' of default 'g++' does not match
error: initialized from
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/build/toolset.jam:39: in toolset.using from module toolset
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/build-system.jam:481: in process-explicit-toolset-requests from module build-system
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/build-system.jam:562: in load from module build-system
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/kernel/modules.jam:283: in import from module modules
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/kernel/bootstrap.jam:142: in boost-build from …
Run Code Online (Sandbox Code Playgroud)

linux boost arm cross-compiling

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

ORMLite - 如何创建对象并填充外部集合?

我正在尝试创建一个对象,并在一个操作中填充该对象持有的外部集合的成员.我已经尝试了我能想到的每一个操作顺序,而且似乎无法让它工作.

我的课程是(跳过不相关的字段和注释):

@DatabaseTable
public class ScheduledJob
{
    @DatabaseField(id=true)
    private String id = UUID.randomUUID ().toString ();

    @ForeignCollectionField(eager=true)
    private Collection<ScheduledJobTask> tasks;

    /* other stuff here ... */
}

@DatabaseTable
public class ScheduledJobTask
{
    @DatabaseField(id=true)
    private String id = UUID.randomUUID ().toString ();
    @DatabaseField(foreign=true)
    private ScheduledJob job;
    /* more other stuff ... */

    public ScheduledJobTask(Task t) { 
       /* initialise scheduled task from template task by copying relevant fields...*/ 
    }

}
Run Code Online (Sandbox Code Playgroud)

我这样创建我的对象:

ScheduledJob job = new ScheduledJob ();
// fill in other fields of job …
Run Code Online (Sandbox Code Playgroud)

java foreign-keys ormlite

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