小编Fyo*_*tov的帖子

在Tomcat 7上运行的Web应用程序中的NoClassDefFoundError

我使用由Maven 3构建的gucie-servlet框架用Java编写的Web应用程序.当我在Tomcat 7容器上部署它并尝试使用浏览器访问它时,Tomcat回复404状态代码.这是来自Tomcat的日志:

Apr 4, 2013 11:39:50 AM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Apr 4, 2013 11:39:50 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()
Apr 4, 2013 11:39:55 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class ru.hive.webserver.config.HiveServletConfig
java.lang.NoClassDefFoundError: ru/hive/base/db/modules/DatabaseModule
    at ru.hive.webserver.config.HiveServletConfig.getInjector(HiveServletConfig.java:24)
    at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)
    at ru.hive.webserver.config.HiveServletConfig.contextInitialized(HiveServletConfig.java:19)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
Caused by: …
Run Code Online (Sandbox Code Playgroud)

java maven-3 maven tomcat7 guice-servlet

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

无法验证来自RxJava订阅服务器的模拟方法调用

我正在尝试在我的Android应用中单独测试演示者.方法我试图测试看起来像这样:

@Override
public boolean loadNextPage() {
    if (!mIsLoading) {
        mIsLoading = true;
        if (mViewReference.get() != null) {
            mViewReference.get().showProgress();
        }
        mService.search(mSearchQuery, ++mCurrentPage)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(itemsPage -> {
                            mIsLoading = false;
                            mTotalPages = itemsPage.getPagination().getTotalPages();
                            if (mViewReference.get() != null) {
                                mViewReference.get().showMovies(itemsPage.getItems());
                            }
                        },
                        error -> {
                            mIsLoading = false;
                            Log.d(LOG_TAG, error.toString());
                        });
    }
    return mTotalPages == 0 || mCurrentPage < mTotalPages;
}
Run Code Online (Sandbox Code Playgroud)

mService是Retrofit接口和mService.search()方法返回RxJava的Observable<SearchResults>.我的单元测试代码如下所示:

package mobi.zona.presenters;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.List;

import …
Run Code Online (Sandbox Code Playgroud)

java android unit-testing rx-java retrofit

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

Room <List <T >>的行为不正确?

我有以下查询方法定义:

@Query("SELECT * FROM box_jobs")
fun getAll(): Maybe<List<BoxJob>>
Run Code Online (Sandbox Code Playgroud)

我想返回此查询的结果,如果它不为空,否则返回REST API调用的结果.这是我的逻辑代码:

override fun loadTasks(): Maybe<List<Task>> {
    Log.d(TAG, "Searching tasks in database")
    return boxJobDao.getAll()
            .map { boxJobs -> boxJobMapper.entityListToTaskList(boxJobs) }
            .switchIfEmpty(syncTasks())
}

private fun syncTasks(): Maybe<List<Task>> {
    Log.d(TAG, "Loading tasks from server")
    return api.boxJobs(DEVICE_ID)
            .doOnSuccess({ boxJobDtoList ->
                Log.d(TAG, "${boxJobDtoList.size} box jobs loaded from server")
                saveToDb(boxJobDtoList)
            })
            .doOnError({ error -> Log.d(TAG, "Error during tasks loading", error) })
            .map { boxJobDtoList -> boxJobMapper.dtoListToTaskList(boxJobDtoList) }
            .toMaybe()
}
Run Code Online (Sandbox Code Playgroud)

问题是,总是使用空调用Maybe返回空数据库,因此运算符不起作用.getAll()onSuccess()List<BoxJob>switchIfEmpty()

我认为这是不正确的行为.我是对的还是我做错了什么?这个问题有解决方法吗?

android kotlin rx-java2 android-room

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