我正在使用Android Studio和Gradle构建脚本.
在我的Android项目的根目录下,有一个名为'other'的文件夹,在'other'文件夹中,有一个属性文件my.properties.
-MyApp/
…
-other/
-my.properties
-build.gradle
Run Code Online (Sandbox Code Playgroud)
在我的build.gradle中,我尝试访问my.properties:
task accessMyProperties {
def folderName = 'other';
//Gradle complains this line
def file = new File("$folderName/my.properties");
...
}
Run Code Online (Sandbox Code Playgroud)
但gradle抱怨说:
* What went wrong:
A problem occurred evaluating project ':MyApp'.
> other/my.properties (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
为什么gradle出现上述错误?如何摆脱它?
我正在使用 typescript 开发 NestJS 项目。
我有一个抽象类:
export abstract class JobExecutor {
private readonly name: string;
constructor(
// I injected the JobConfig instance in constructor
protected readonly config: JobConfig,
) {
this.name = this.getName();
}
abstract getName(): string;
// non-abstract method also needs to access `config`
doJob = async ()=> {
const configMetaData = this.config.metadata;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我的具体类扩展了上述抽象类,它本身被注入到另一个调用者,但这不是问题,所以我不在这里显示:
@Injectable()
export class HeavyJobExecutor extends JobExecutor {
//implement the abstract method
getName(): string {
// it accesses the injected `config` from the abstract …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 Node.js 项目。我通过 Dockerfile 对它进行了 Docker 化:
FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm install --only=prod
COPY . .
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
当我运行时docker build -t my-service:1.0 .,我收到警告:
> [4/5] RUN npm install --only=prod:
#9 1.042 npm WARN config only Use `--omit=dev` to omit dev dependencies from the install.
Run Code Online (Sandbox Code Playgroud)
这是否意味着 Docker 建议我使用--omit=dev而不是--only=prod:不安装开发依赖项?
当考虑 OAuth2.x 授权类型(例如代码或密码或隐式授权类型)时,最终,javascript Web 前端应用程序将获得 JWT访问令牌作为身份验证请求(例如登录用户)的响应。
然后,前端将在发送到后端的后续请求的承载标头中使用上述访问令牌(在其有效期内),这意味着该访问令牌需要存储在前端侧,以便在形成后续请求时在请求标头中使用访问令牌。我在这里说得通吗?
我的两个问题:
Q1. 将访问令牌存储在 javascript 前端不是不安全吗?因为浏览器的开发人员工具可以公开此访问令牌,该令牌可能被恶意用户使用。我在这里说得通吗?如果是这样,在身份验证后获得此访问令牌后,在前端托管此访问令牌的正确方法是什么?
Q2。如果前端还想通过检查内部声明来验证令牌,则意味着前端需要公钥,这是一个好的方法吗?如果不是,如果前端在向后端形成后续请求时需要验证存储的令牌,那么更好的方法是什么?
我正在使用Maven来构建我的android项目.在我的Android项目pom.xml中,我已经定义了google-play-service的依赖关系:
<dependency>
<groupId>com.google.android.gms</groupId>
<artifactId>google-play-services</artifactId>
<type>apklib</type>
<version>7</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的项目成功建成.我正在使用的Android设备也安装了Google Play应用.但是,当我启动我的应用程序时,我不断收到以下错误:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.identifier.AdvertisingIdClient" on path: DexPathList[[zip file "/data/app/com.my.app-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
Run Code Online (Sandbox Code Playgroud)
这个错误的原因是什么?怎么解决?
android maven google-play google-play-services google-advertising-id
我通过以下方式获得了一个活动课:
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
String activityClassName = launchIntent.getComponent().getClassName();
Class<?> activityClazz = Class.forName(activityClassName);
Run Code Online (Sandbox Code Playgroud)
是否可以使用activityClazz?创建此Activity的实例?如果是这样,怎么办?
(我的代码在独立的Java类中。不在活动或服务中。)
我有一个包名称,其值为com.foo.bar.my.app。我想src/main/test在基于点的字符串包名称中的任何目录都不存在的情况下创建目录。
我知道我可以通过分割每个目录名称来实现:
String pkgName = "com.foo.bar.my.app";
String[] dirs = pkgName.split(".");
Run Code Online (Sandbox Code Playgroud)
然后File为每个目录名称创建对象,并使用File#exists() api检查并创建新文件(如果不存在)。
但是,在Java 8中是否有更简洁的优雅方法来实现它?
我正在使用Mockito来编写我的测试用例.我有一个简单的类,其中包含一个countPerson(boolean)我有兴趣测试的函数:
public class School {
//School is a singleton class.
public void countPerson(boolean includeTeacher) {
if (includeTeacher) {
countIncludeTeacher();
return;
}
countOnlyStudents();
}
public void countIncludeTeacher() {...}
public void countOnlyStudents() {...}
}
Run Code Online (Sandbox Code Playgroud)
在我的单元测试中,我想测试一下这个countPerson(boolean)函数:
public class SchoolTest{
private School mSchool;
@Before
public void setUp(){
mSchool = School.getInstance();
}
@Test
public void testCountPerson() {
mSchool.countPerson(true);
//How to test/verify countIncludeTeacher() is invoked once?
}
}
Run Code Online (Sandbox Code Playgroud)
countIncludeTeacher()在我的测试用例中,如何使用Mockito进行检查/验证一次?
我在我的 Android (kotlin) 项目中使用 Retrofit。
我创建了我的界面:
interface StudentsInterface {
@GET("foo/bar/{id}")
suspend fun getStudent(@Path("id") myId: Int)
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个MyClient类,在其中定义了一个通用函数,用于从任何接口创建端点服务,如上面定义的代码:
class MyClient() {
@Inject
lateinit var retrofit: Retrofit
// this is my generic function
fun <T> createService(interfaceClazz: Class<T>?): T {
// Compiler error: Type mismatch: inferred type is Class<T>? but Class<T!> was expected
return retrofit.create(interfaceClazz)
}
}
Run Code Online (Sandbox Code Playgroud)
这样在另一堂课上我就可以:
val sService = myClient.createService(StudentsInterface::class.java)
...
Run Code Online (Sandbox Code Playgroud)
但是当我构建项目时,我总是收到编译器错误:Type mismatch: inferred type is Class<T>? but Class<T!> was expected在代码行中return retrofit.create(interfaceClazz)
为什么我会收到此错误?如何摆脱它?
我正在开发一个 Laravel 项目。我尝试使用 Carbon 创建一个 DateTime 对象。这是我尝试过的:
Carbon::createFromFormat('Y-m-d H:i:s', '2021-10-01T00:01:00')->toDateTime();
Run Code Online (Sandbox Code Playgroud)
但我的 phpstan 抱怨:Cannot call method toDateTime() on Carbon\Carbon|false.
为什么会出现这个错误呢?Carbon转换为对象的正确方法是什么DateTime?
android ×3
java ×2
node.js ×2
access-token ×1
build.gradle ×1
docker ×1
dockerfile ×1
frontend ×1
generics ×1
google-play ×1
gradle ×1
groovy ×1
java-8 ×1
kotlin ×1
laravel ×1
maven ×1
mockito ×1
nestjs ×1
oauth ×1
oauth-2.0 ×1
package.json ×1
php ×1
php-carbon ×1
phpstan ×1
retrofit ×1
retrofit2 ×1
typescript ×1
unit-testing ×1