CDO Constructor failed to find my Skeletal Mesh

I’ve been trying to create an Actor with a default Skeletal Mesh set for it. However, although setting up the Skeletal Mesh Component all works fine and dandy, when I create a Blueprint Class derived from the C++ class, the default mesh is empty.

I find that I get an error from the CDO Constructor that it can’t find the Skeletal Mesh asset that I reference, though I used right-click->copy reference on my Skeletal Mesh asset so I’m sure it exists. I’m also pretty sure the formatting is correct, after looking at multiple people having this problem. The common solution is to use a constructor. I am.

Could you take a look at it for me?

.h file:
#pragma once

#include "GameFramework/Actor.h"
#include "GodHand.generated.h"

UCLASS()
class PROJECTJUPITER_API AGodHand : public AActor
{
	GENERATED_BODY()
	
    // Constructor declaration
    AGodHand(const FObjectInitializer& ObjectInitializer);
    
public:	
	// Sets default values for this actor's properties
	AGodHand();

	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;

private:
    // Declare that we'll use a Scene Component called Dummy Root (it will be used for the root of the Actor)
    UPROPERTY()
    USceneComponent* DummyRoot;
    
    // Declare that we'll be adding a skeletal mesh.
    UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Hand", meta = (AllowPrivateAccess =  "true"))
    USkeletalMeshComponent* SK_HandMesh;
};

.cpp file:
#include “ProjectJupiter.h”
#include “GodHand.h”

// Sets default values
AGodHand::AGodHand(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
    
    // Default root component needed for C++ classes; Blueprints create one on the fly
    RootComponent = DummyRoot = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("RootComponent"));
    
    // Create and attach the Skeletal Mesh component to the root.
    SK_HandMesh = ObjectInitializer.CreateDefaultSubobject<USkeletalMeshComponent>(this, TEXT("HandMesh"));
    SK_HandMesh->SetupAttachment(DummyRoot);
    static ConstructorHelpers::FObjectFinder<USkeletalMeshComponent> HandMesh(TEXT("SkeletalMesh'/Game/ProjectJupiter/Mesh/Gods/GodHand.GodHand'"));
    
}

// Called when the game starts or when spawned
void AGodHand::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void AGodHand::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );

}

I have the same problem~

May be you can try to remove some part of your ref string, like this:

static ConstructorHelpers::FObjectFinder<USkeletalMeshComponent> HandMesh(TEXT("/Game/ProjectJupiter/Mesh/Gods/GodHand"));

It works for me