java 静态文件_如何从引用的Java项目访问静态资源(WEB-INF)文件夹中的文件?...

小编典典

我最终使用Spring

MockServletContext类,并在测试运行之前将其直接注入到我的服务bean中,因为我的服务已实现ServletContextAware:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "/test-ctx.xml" } )

public class SomeServiceTest {

@Autowired

private MyServletContextAwareService myService;

@Before

public void before(){

//notice that I had to use relative path because the file is not available in the test project

MockServletContext mockServletContext = new MockServletContext("file:..//src/main/webapp");

myService.setServletContext(mockServletContext);

}

如果我有多个使用Servlet

Context的类,那么更好的解决方案是使用WebApplicationContext代替默认的类(当前由DelegatingSmartContextLoader提供),但是它将需要实现自定义ContextLoader类并将其类名传递给

@ContextConfiguration 批注。

*后来想到的*另一种更清洁的解决方案 是重构服务并ServletContext

通过@Autowired而不是进行注入ServletContextAware,并提供相应类型的bean(实际上是一个MockServletContext实例)。

将来可能MockServletContext会在Spring中添加来自测试类的直接支持,请参阅SPR-5399和SPR-5243。

*春季3.2的*更新 在Spring

3.2中,Servlet上下文的初始化变得像添加一个@WebAppConfiguration注释一样简单:

@RunWith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration("file:..//src/main/webapp")

@ContextConfiguration(locations = { "/test-ctx.xml" } )

public class SomeServiceTest {

查看文章中的详细信息

2020-11-23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android JNI 引用 .a 静态文件的步骤如下: 1. 在 Android.mk 文件指定静态库的路径和名称。例如: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := native-lib LOCAL_SRC_FILES := native-lib.cpp LOCAL_LDLIBS := -llog LOCAL_STATIC_LIBRARIES := my-static-lib include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := my-static-lib LOCAL_SRC_FILES := libmy-static-lib.a include $(PREBUILT_STATIC_LIBRARY) 2. 将静态文件放置在 jni 目录下,并在 Android.mk 文件指定静态库的路径和名称。 3. 在 C++ 代码使用 #include 指令引用静态库的头文件。 4. 在 C++ 代码使用 extern "C" 指令声明静态的函数。 5. 在 C++ 代码使用 System.loadLibrary() 函数加载动态库,并调用静态的函数。 下面是一个示例代码: #include <jni.h> #include <string.h> #include <android/log.h> #include "my-static-lib.h" extern "C" JNIEXPORT jstring JNICALL Java_com_example_native_1lib_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) { const char* message = my_static_lib_function(); return env->NewStringUTF(message); } 注意:在 Android Studio 使用 CMake 构建系统时,可以在 CMakeLists.txt 文件使用 target_link_libraries() 函数引用 .a 静态文件。例如: add_library(my-static-lib STATIC IMPORTED) set_target_properties(my-static-lib PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/my-static-lib.a) target_link_libraries(native-lib my-static-lib)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值