小编use*_*225的帖子

Gradle抱怨"没有这样的文件或目录"

我正在使用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出现上述错误?如何摆脱它?

groovy gradle build.gradle android-gradle-plugin

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

NestJS:带有抽象类的构造函数注入

我正在使用 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)

abstract-class node.js typescript nestjs

5
推荐指数
1
解决办法
6336
查看次数

仅 npm WARN 配置 使用 `--omit=dev`

我有一个简单的 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:不安装开发依赖项?

node.js docker dockerfile package.json

4
推荐指数
1
解决办法
7483
查看次数

关于身份验证后访问令牌前端获取的问题

当考虑 OAuth2.x 授权类型(例如代码或密码或隐式授权类型)时,最终,javascript Web 前端应用程序将获得 JWT访问令牌作为身份验证请求(例如登录用户)的响应。

然后,前端将在发送到后端的后续请求的承载标头中使用上述访问令牌(在其有效期内),这意味着该访问令牌需要存储在前端侧,以便在形成后续请求时在请求标头中使用访问令牌。我在这里说得通吗?

我的两个问题:

Q1. 将访问令牌存储在 javascript 前端不是不安全吗?因为浏览器的开发人员工具可以公开此访问令牌,该令牌可能被恶意用户使用。我在这里说得通吗?如果是这样,在身份验证后获得此访问令牌后,在前端托管此访问令牌的正确方法是什么?

Q2。如果前端还想通过检查内部声明来验证令牌,则意味着前端需要公钥,这是一个好的方法吗?如果不是,如果前端在向后端形成后续请求时需要验证存储的令牌,那么更好的方法是什么?

authentication frontend oauth access-token oauth-2.0

4
推荐指数
1
解决办法
1906
查看次数

没有找到"com.google.android.gms.ads.identifier.AdvertisingIdClient"类

我正在使用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

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

使用Activity类对象创建Activity的实例

我通过以下方式获得了一个活动课:

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类中。不在活动或服务中。)

android android-intent android-activity

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

根据点字符串包名称创建目录(如果不存在)

我有一个包名称,其值为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中是否有更简洁的优雅方法来实现它?

java java-8

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

Mockito验证在我的情况下调用一次函数

我正在使用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进行检查/验证一次?

java unit-testing mockito

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

我用于 Retrofit 接口创建的通用函数出现编译器错误:推断类型是 Class&lt;T&gt;?但 Class&lt;T!&gt; 是预期的

我在我的 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)

为什么我会收到此错误?如何摆脱它?

generics android kotlin retrofit retrofit2

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

为什么在尝试将 Carbon 转换为 DateTime 时出现错误?

我正在开发一个 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

php laravel php-carbon phpstan

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