microsoft / microsoft/vscode-java-debug

Compilation errors in vscode, but not in maven nor in Intellij

未关闭
#1,247 11 条评论 0 个 reaction 已指派 2 人 在 GitHub 查看

@CsCherrYY 已经在做这个了。

开始于 2022年10月28日。

ai-triaged bug compile
主要语言
TypeScript
星标
591
派生
429
平均合并
1 天 9 小时
30 天内合并 PR
19

描述

(Quick note: I'm not 100% if this is the right repo for this, as I'm not 100% sure if the error is here or with the language server (or something else entirely), but trying here first)

Brief backstory: My colleagues use Intellij as they work fulltime on backend and prefer it. I primarily work frontend, and use Vscode. This has worked fine for a while, but recently (1-2 months back) it started throwing weird errors.

When I open the project, I get several of the error messages below in the "Problems" tab. If I try running my debugger and click "Proceed" in the prompt about build errors, it fails to start up with this error:

Caused by: java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from Class<DocumentValidator> to Class<? extends ConstraintValidator<?,?>>

	at com.equinor.gom.model.validator.annotation.ValidateDocument.<clinit>(ValidateDocument.java:14)
ValidateDocument.java:14
	at java.base/java.lang.Class.forName0(Native Method)

If I close java files and run mvn clean install in the terminal, then run the debugger, I get the prompt about build errors, but after clicking "Proceed" the application starts up fine. If I run the application with mvn spring-boot:run, it also starts fine.

Relevant code in stacktrace:
@Constraint(validatedBy = {AssetAreaValidator.class})

AssetAreaValidator:

@Component
@Slf4j
public class AssetAreaValidator extends parentValidator implements ConstraintValidator<ValidateAssetArea, AssetArea> {

    @Override
    public void initialize(ValidateAssetArea constraintAnnotation) {
        super.initialize(constraintAnnotation);
    }

    @Override
    public boolean isValid(AssetArea value, ConstraintValidatorContext context) {
       return validate(value, context);
    }

    private boolean validate(AssetArea value, ConstraintValidatorContext context) {
        if (value == null) {
            return false;
        }

        // create factory in order to generate correct validators
        var validatorFactory = new VerifierFactory<Container>();

        return verifierOrchestrator.validateAllRulesForSingleObject(value, validatorFactory,
                VerifierOrchestrator.DocumentEntity.assetArea, context);
    }
}

parentValidator:

public abstract class parentValidator<T> {
    protected ValidatorUtil validatorUtil = null;
    protected VerifierOrchestrator verifierOrchestrator = null;

    protected void initialize(T constraintAnnotation) {
        sanityCheck();
    }

    private void sanityCheck() {
        if (validatorUtil == null) {
            validatorUtil = ApplicationContextProvider.getBean(ValidatorUtil.class);
        }
        if (verifierOrchestrator == null) {
            verifierOrchestrator = ApplicationContextProvider.getBean(VerifierOrchestrator.class);
        }
    }
}
Environment
  • Operating System: macOS Ventura
  • JDK version: 11.0.16.1 (tried with 11.0.6 as well)
  • Visual Studio Code version: 1.72.2 (Universal)
  • Java extension version: Pre-release version
  • Java Debugger extension version: Pre-release version
{
  message: '[Error - 2:53:37 PM] 25. okt. 2022, 14:53:37 Error occured while building workspace. Details: \n' +
    ' message: Type mismatch: cannot convert from Class<AssetAreaValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateAssetArea.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<AssetLocationValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateAssetLocation.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<ContainerValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateContainer.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<ContractualRateValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateContractualRate.java; line: 13\n' +
    ' message: Type mismatch: cannot convert from Class<CurrencyValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateCurrency.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<DocumentValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateDocument.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<DocumentBalanceValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateDocumentBalance.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<DocumentCategoryValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateDocumentCategory.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<DocumentMovementValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateDocumentMovement.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<IcsControlInvoiceLineValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateIcsIcsControlInvoiceLine.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<InvoiceValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateInvoice.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<InvoiceLineValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateInvoiceLine.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<LabelValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateLabel.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<LegalEntityValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateLegalEntity.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<LineTypeValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateLineType.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<MovementTypeValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateMovementType.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<PipelineBalanceValidaor> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidatePipelineBalance.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<PipelineNodeValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidatePipelineNode.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<PipelineSystemValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidatePipelineSystem.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<QuantityBalanceValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateQuantityBalance.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<QuantityMovementValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateQuantityMovement.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<RateChangeTriggerValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateRateChangeTrigger.java; line: 15\n' +
    ' message: Type mismatch: cannot convert from Class<TemplateValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateTemplate.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<UomValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateUom.java; line: 14\n' +
    ' message: Type mismatch: cannot convert from Class<ValueMappingValidator> to Class<? extends ConstraintValidator<?,?>>; code: 16777233; resource: /Users/RHENRI/dev/oilmod-gom/backend/model/src/main/java/com/equinor/gom/model/validator/annotation/ValidateValueMapping.java; line: 14',
  level: 'info',
  timestamp: '2022-10-25 14:53:37.382'
}
Current Result

VS Code fails to compile the application, resulting in a runtime error, but running maven directly works fine, and debugger also works after I run mvn clean install

Expected Result

VS Code should just work ™️

Additional Informations

launch.json:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "Launch GomApplication",
            "request": "launch",
            "mainClass": "com.equinor.gom.backend.GomApplication",
            "console": "internalConsole",
            "projectName": "backend",
            "args": [
                "--spring.profiles.active=local",
                "--database=${command:SpecifyProgramArgs}"
            ]
        }
    ]
}

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。