diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/Dependent.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/Dependent.java new file mode 100644 index 0000000000..be60425c2e --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/Dependent.java @@ -0,0 +1,6 @@ +package main.java.oldclass; + +public class Dependent { + //This needed to be commented post compilation of NoSuchFielDError and Compile + public static String message = "Hello Baeldung!!"; +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldError.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldError.java new file mode 100644 index 0000000000..504e64e7f9 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldError.java @@ -0,0 +1,7 @@ +package main.java.oldclass; + +public class NoSuchFieldError { + public static void main(String[] args) { + System.out.println(Dependent.message); + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldError2.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldError2.java new file mode 100644 index 0000000000..421900a21e --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldError2.java @@ -0,0 +1,20 @@ +package main.java.reflection; + +import java.lang.reflect.Field; + +public class NoSuchFieldError2 { + //String message = "Hello Baeldung!!!"; + + public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException { + print(); + } + + public static void print(){ + ValidateNoSuchFieldError clss = new ValidateNoSuchFieldError(); + Class aClass = Class.forName(clss.getClass().getName()); + Field field = aClass.getDeclaredField("message"); + field.setAccessible(true); + String msgStr = (String)field.get(clss); + System.out.println(msgStr); + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldErrorTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldErrorTest.java new file mode 100644 index 0000000000..88ff6ce3a0 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/nosuchfielderror/NoSuchFieldErrorTest.java @@ -0,0 +1,13 @@ +package com.baeldung.exceptions.nosuchmethoderror; + +import static org.junit.Assert.assertNotNull; + +import org.junit.jupiter.api.Test; + +public class NoSuchFieldErrorTest { + + @Test(expected = NoSuchFieldException.class) + public void whenFieldNotFound_thenThrowNoSuchFieldException() { + NoSuchFieldError2.print(); + } +}