microsoft / microsoft/vscode-java-debug

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

Ouverte
#1,247 11 commentaires 0 réactions 2 personnes assignées Voir sur GitHub

@CsCherrYY y travaille déjà.

Depuis le 28/10/2022.

ai-triaged bug compile
Langage dominant
TypeScript
Étoiles
591
Forks
429
Merge moyen
1 j 9 h
PR mergées (30 j)
19

Description

(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}"
            ]
        }
    ]
}

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.