diff --git a/MANIFEST.MF b/MANIFEST.MF
new file mode 100644
index 0000000..fec577b
--- /dev/null
+++ b/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Bundle-SymbolicName: org.eclipse.jdt.core.compiler.batch
+Archiver-Version: Plexus Archiver
+Built-By: genie.releng
+Bundle-ManifestVersion: 2
+Bundle-Vendor: Eclipse.org
+Main-Class: org.eclipse.jdt.internal.compiler.batch.Main
+Export-Package: org.eclipse.jdt.core,org.eclipse.jdt.core.compiler,org
+ .eclipse.jdt.internal.antadapter;x-internal:=true,org.eclipse.jdt.int
+ ernal.compiler;x-internal:=true,org.eclipse.jdt.internal.compiler.apt
+ .dispatch;x-internal:=true,org.eclipse.jdt.internal.compiler.apt.mode
+ l;x-internal:=true,org.eclipse.jdt.internal.compiler.apt.util;x-inter
+ nal:=true,org.eclipse.jdt.internal.compiler.ast;x-internal:=true,org.
+ eclipse.jdt.internal.compiler.batch;x-internal:=true,org.eclipse.jdt.
+ internal.compiler.classfmt;x-internal:=true,org.eclipse.jdt.internal.
+ compiler.codegen;x-internal:=true,org.eclipse.jdt.internal.compiler.e
+ nv;x-internal:=true,org.eclipse.jdt.internal.compiler.flow;x-internal
+ :=true,org.eclipse.jdt.internal.compiler.impl;x-internal:=true,org.ec
+ lipse.jdt.internal.compiler.lookup;x-internal:=true,org.eclipse.jdt.i
+ nternal.compiler.parser;x-internal:=true,org.eclipse.jdt.internal.com
+ piler.parser.diagnose;x-internal:=true,org.eclipse.jdt.internal.compi
+ ler.problem;x-internal:=true,org.eclipse.jdt.internal.compiler.util;x
+ -internal:=true,org.eclipse.jdt.internal.compiler.tool;x-internal:=tr
+ ue
+Bundle-Name: Eclipse Compiler for Java(TM)
+Bundle-Version: 3.13.0.v20170516-1929
+Bundle-ClassPath: .
+Created-By: Apache Maven
+Build-Jdk: 1.8.0_121
+
diff --git a/ecj-4.9.pom b/ecj-4.9.pom
new file mode 100644
index 0000000..0155a2d
--- /dev/null
+++ b/ecj-4.9.pom
@@ -0,0 +1,64 @@
+
+
+
+ 4.0.0
+ org.eclipse.jdt.core.compiler
+ ecj
+ 4.9
+ jar
+ Eclipse ECJ
+ Eclipse JDT Core Batch Compiler
+ http://www.eclipse.org/jdt/
+
+ UTF-8
+ UTF-8
+ 1.8
+ 1.8
+
+
+
+ Eclipse Public License v1.0
+ http://www.eclipse.org/org/documents/epl-v10.php
+ repo
+
+
+
+ http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/
+ :pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse
+
+
+
+
+ Ralph Schaer
+ ralphschaer@gmail.com
+
+
+
+
+
+ org.apache.ant
+ ant
+ 1.9.4
+ true
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.10.3
+
+ -Xdoclint:none
+
+
+
+
+
+
diff --git a/ecj.sh.in b/ecj.sh.in
new file mode 100644
index 0000000..d8a40e9
--- /dev/null
+++ b/ecj.sh.in
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+CLASSPATH=$(build-classpath ecj):${CLASSPATH=.} \
+java org.eclipse.jdt.internal.compiler.batch.Main "$@"
diff --git a/ecj.spec b/ecj.spec
new file mode 100644
index 0000000..4fde71d
--- /dev/null
+++ b/ecj.spec
@@ -0,0 +1,68 @@
+Epoch: 1
+
+Name: ecj
+Version: 4.9
+Release: 3
+Summary: the Eclipse Compiler for Java
+License: EPL-2.0
+URL: http://www.eclipse.org
+
+Source0: http://download.eclipse.org/eclipse/downloads/drops4/R-4.9-201809060745/ecjsrc-4.9.jar
+Source1: ecj.sh.in
+Source3: https://repo1.maven.org/maven2/org/eclipse/jdt/core/compiler/ecj/%{version}/ecj-%{version}.pom
+Source4: MANIFEST.MF
+Source5: java10api.jar
+
+Patch0: javaAPI.patch
+
+BuildArch: noarch
+BuildRequires: ant javapackages-local
+
+%description
+ECJ is the the Eclipse Compiler for Java. It is also known as the JDT Core batch compiler.
+
+%package_help
+
+%prep
+%autosetup -c -n %{name}-%{version} -p1
+
+sed -i -e 's|debuglevel=\"lines,source\"|debug=\"yes\"|g' build.xml
+sed -i -e "s/Xlint:none/Xlint:none -encoding cp1252/g" build.xml
+rm -f org/eclipse/jdt/core/JDTCompilerAdapter.java
+cp %{SOURCE3} pom.xml
+mkdir -p scripts/binary/META-INF/
+cp %{SOURCE4} scripts/binary/META-INF/MANIFEST.MF
+
+%pom_remove_dep org.apache.ant:ant
+
+%mvn_file :ecj ecj jdtcore
+%mvn_alias org.eclipse.jdt.core.compiler:ecj org.eclipse.jdt:core org.eclipse.jdt:ecj \
+ org.eclipse.tycho:org.eclipse.jdt.core org.eclipse.tycho:org.eclipse.jdt.compiler.apt
+%mvn_artifact "org.eclipse:java10api:jar:10" %{SOURCE5}
+%mvn_alias "org.eclipse:java10api:jar:10" "org.eclipse:java9api:jar:9"
+
+%build
+ant -Djavaapi=%{SOURCE5}
+
+%install
+%mvn_artifact pom.xml ecj.jar
+%mvn_install
+
+sed -i 's/[0-9a-f]\{8\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{12\}/f2f42549-cfab-4d71-be48-5e9f9a41e5f5/g' $(find %{_buildrootdir} -name ecj.xml)
+
+install -p -D -m0755 %{SOURCE1} %{buildroot}%{_bindir}/ecj
+mkdir -p %{buildroot}%{_mandir}/man1
+install -m 644 -p ecj.1 %{buildroot}%{_mandir}/man1/ecj.1
+
+%files -f .mfiles
+%defattr(-,root,root)
+%doc about.html
+%{_bindir}/ecj
+
+%files help
+%defattr(-,root,root)
+%{_mandir}/man1/ecj*
+
+%changelog
+* Wed Dec 4 2019 openEuler Buildteam - 1:4.9-3
+- Package init
diff --git a/ecjsrc-4.9.jar b/ecjsrc-4.9.jar
new file mode 100644
index 0000000..a48d6a2
Binary files /dev/null and b/ecjsrc-4.9.jar differ
diff --git a/java10api.jar b/java10api.jar
new file mode 100644
index 0000000..464b691
Binary files /dev/null and b/java10api.jar differ
diff --git a/javaAPI.patch b/javaAPI.patch
new file mode 100644
index 0000000..71de2e4
--- /dev/null
+++ b/javaAPI.patch
@@ -0,0 +1,26 @@
+--- a/build.xml.orig 2018-03-20 15:15:57.063810672 +0000
++++ b/build.xml 2018-03-20 15:16:26.018700633 +0000
+@@ -15,16 +15,20 @@
+
+
+
++
++
++
++
+
+
+
+
+
+-
+-
++
+
+
+