Kayıt defteri anahtarı Hatası: Java sürümü '1.8' değerine sahip, ancak '1.7' gerekli


92

Koşarken

sencha app build production

Aşağıdaki hatayı alıyorum:

Hata: Kayıt defteri anahtarı 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion '

'1.8' değerine sahiptir, ancak '1.7' gereklidir. Hata: java.dll bulunamadı Hata: Java SE Çalışma Zamanı Ortamı bulunamadı.

java -version , komut şunları gösteriyor:

java sürümü "1.8.0_40" Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.8.0_40-b26) Java HotSpot (TM) 64-Bit Sunucu VM (derleme 25.40-b25, karma mod)

Yolun nerede yanlış gittiğini bulamıyorum. Herhangi bir fikir?

----------------------- DÜZENLE -------------------------- ----------------------

Not : Windows 7 (64 bit) kullanıyorum.

Sencha touch cmd'yi kaldırmayı ve yeniden yüklemeyi denedim. Ama yine de aynı hata.

Tüm java sürümü örneklerini kaldırdım ve en son sürümü yeniden yükledim, Hala sorun devam ediyor.

Yanıtlar:


295

Yüzden fazla numara denedikten sonra nihayet başarılı oldu.

Bütün kaldırıldı java.exe, javaw.exeve javaws.exegelen benim

  1. Windows\System32 ve

  2. Windows\SysWOW64 Klasör. [X64 sisteminiz varsa 2. adımı deneyin (Win 7 64 bit)]


11
Win 10 64Bit kullanıcıları: içindeki 3 dosyayı silmek System32sorunu çözecektir.
iTurki

4
Ama değişiklikleri görmek için cmd'yi kapatıp yeniden açmalı ve java -version yazmalıyız ... Bir çekicilik gibi çalıştı teşekkürler!
Cristian B.

1
@SkepticScribbler: Bu, java'nın kendisini bir şekilde karıştırdığınızda olur. Bir JRE 8 bulduğu bir java 7 VM çalıştırmaya çalışıyorsunuz. Yanlış yapılandırılmış bir ortamda komut satırına sadece java veya java sürümü yazsanız bile bu sorunu gösterebilir.
Anand Gupta

@AnandGupta bu bir çözüm değil karanlıkta bir çekim - stackoverflow.com/a/53192247/1423507
masseyb

39

Benim durumumda (Windows 7 64-bit), sadece aşağıdakileri yaptım:

  • Referans kaldırılmıştır C: \ ProgramData'nın \ Oracle \ Java \ javapath; dan Yolu ortam değişkeni
  • Kaldırılan dosyaları java , javaw ve javaws gelen C: \ Windows \ System32 klasörü

Daha sonra, tüm açık komut satırı konsollarını kapattım , yeniden açtım ve java sürümünü çalıştırdım .


Windows 10'da JDK5u14, JDK6u34, JDK7u51 ve JDK8u121'i (bu sırayla) yüklerken bu sorunu yaşadım. Java dosyalarının Windows klasöründen kaldırılması yeterli değildi. PATH ortam değişkeninden yolu da kaldırmak gerekiyordu.
uhm

31
  1. regedit'i aç
  2. git [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. değeri CurrentVersion"1.8" den "1.7" ye değiştirin

2
Teşekkürler. Sorunumu çözdü. SysWOW64 altında herhangi bir şeyi silme iznim yok. Sadece Regedit aracılığıyla CurrentVersion'ı değiştirmek sorunumu çözdü.
Krish

1
Tüm gereksiz java sürümlerini silmeye çalışmaktan çok daha basit bir çözüm!
Fred Andrews

.. ancak, hiçbir şeyi çözmez. Daha sonra yükleyici şikayet eder ve haklı olarak, java 8'in gerekli olması.
user508402

Teşekkürler bu çözüm işe yaradı, bu hatayı uzun süre çözmeye çalışıyordu
Abhishek Sawant

Uyarı: 1.8 kullanacak şekilde yapılandırılmış diğer uygulamalarınızı bozabilir.
Waqas

19

re: Windows kullanıcıları

Hayır. Javapath ortam referansını PATH değişkeninizden kaldırmayın.

Kayıt defterinin çalışmamasının nedeni, Oracle Javapath komut dosyasının JRE & JDK dizinlerinden önce PATH dizisinde çalışması gerektiğidir - mevcut sürümü sıralayacaktır:

bu dizini %PATH%değişkeninizin HEAD bölümüne koyun :

C:\ProgramData\Oracle\Java\javapath

[veya masaüstünüzde nerede olursa olsun]

Yani senin PATH'iniz böyle bir şeye benzeyecek - örneğin benimki

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

Daha sonra doğru, güncel sürümü göreceksiniz:

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

Bu benim için çalışıyor. Windows 7 (64 bit) kullanıyorum. C: \ ProgramData \ Oracle \ Java \ javapath'ı önerdiğiniz gibi PATH'ın başına taşıdım. Teşekkürler!
softwarelover

1
Hey işe yaradı! Bilgisayarınızı yeniden başlatmayı unutmayın, teşekkürler.
Sandoval0992

12

Benim deneyimim:

Windows 8.1 kullanıyorum ve JAVA sürümünü 1.8'den 1.7'ye düşürdüm ve aynı hatayı alıyorum.

Hata: Kayıt defteri anahtarı 'Software \ JavaSoft \ Ja' 1.7 'değerine sahip, ancak' 1.8 'gerekiyor.

Ben sildiniz java.exe , Javaw.exe ve javaws.ex gelen e C: \ Windows \ System32 klasörüne ve bu benim için çalıştı.


Yoldaki diğer Java sürümleri için başka java yürütülebilir dosyaları varsa bu çalışmayacaktır.
Underverse

9

Ben de aynı sorunu yaşadım. Benim için çalıştı Basit çözüm girişleri yeniden düzenlemek olduğu PATHiçin JRE/JDK. Bu sorun JRE 8, kurulumu bazı yürütülebilir dosyaları System32 or SysWOW64dizinlere koyanların kurulumundan sonra ortaya çıkmaya başladı , bu yürütülebilir dosyalar karışıyor. Sorunu çözmek için:

  1. JDK ana sayfasına işaret eden ortam değişkeni oluşturun JAVA_HOME.

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. %JAVA_HOME%\binPATH ortam değişkeninizin başlangıcına girişi koyun . Mevcut değeri ekleniyor PATH. Örneğin:

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%


3
java'nın birden çok sürümünü yan yana tutmak istiyorsanız ve kayıt defterini değiştirme ve windows \ sistem klasöründen dosyaları kaldırma ayrıcalığına sahip değilseniz bu en iyi çözümdür.
Heinz

3

Java.exe dosyalarının hiçbirini silmedim, ancak Sistemimin - "yol" değişkeninin sırasını değiştirdim, böylece ilk girdi olarak% JAVA_HOME% \ bin değerini yansıttı. Bu hile yaptı.


3

Hata açık ...

Hata: 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'kayıt defteri anahtarı' 1.8 'değerine sahip, ancak' 1.7 'gerekiyor.

Hata: java.dll bulunamadı

Hata: Java SE Çalışma Zamanı Ortamı bulunamadı.

... Kullanmak çalıştığınız java.exesüre 1.7 yürütülebilir HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment>CurrentVersion kayıt defteri anahtarı değerini 1.8 sahiptir.

Önerilen çözümlerde yinelenen tema, hatanın bir yapılandırma hatası olmasıdır . Hata, çeşitli farklı şekillerde çözülebilir (örneğin, kullanıcı ortamının yeniden yapılandırılması veya java yürütülebilir dosyalarının parmakları çaprazlamayla kaldırılması java.exeve kullanıcılarda başka bir geri dönüş %PATH%olduğunu ve geri dönüşün olduğunu ummak)java.exe doğru yürütülebilir dosya ).

doğru çözüm size ulaşmak için çalışıyoruz bağlıdır: "? Sen jdk-7 için jdk-8'e yükseltmek için çalışıyorsunuz jdk-8 düşürülecek çalışıyoruz ..."

Üreme adımları

  1. jdk-7u80-windows-x64.exe'yi yükleyin

notlar:

  • java.exekullanıcılarda bulunan yürütülebilir dosya şuraya %PATH%yüklenir:C:\Windows\System32
  • kurulum kullanıcıları güncellemez %PATH%
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersiondize kayıt girdisi değeri ile (diğerleri arasında) yaratılır1.7
  1. jdk-8u191-windows-x64.exe'yi yükleyin

notlar:

  • kullanıcılar %PATH%dahil edilecek şekilde güncellenirC:\Program Files (x86)\Common Files\Oracle\Java\javapath ilk girdi olarak şekilde
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersiondize kayıt defteri girdilerini değeri güncellenir1.8
  1. kullanıcıların %PATH%ortam değişkenini güncelle , kaldırC:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. yeni bir komut isteminde java -version

Hata: 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'kayıt defteri anahtarı' 1.8 'değerine sahip, ancak' 1.7 'gerekiyor.

Hata: java.dll bulunamadı

Hata: Java SE Çalışma Zamanı Ortamı bulunamadı.

Çözüm (ler)

  1. OP'nin çözümü https://stackoverflow.com/a/29769311/1423507 , "parmak uçları kesilmiş java.exeve kullanıcılarda bir geri dönüş %PATH%olduğunu ve yedek yürütülebilir dosyanın hataya doğru olduğunu umuyor " yaklaşımıdır. Çoğaltma adımları göz önüne alındığında java.exe, javaw.exeve javaws.exeçalıştırılabilir dosyaların kaldırılması C:\Windows\System32(yalnızca benim durumumda) artık java.exekullanıcılarda herhangi bir mevcut bulunmamasına %PATH%neden olacak ve 'java' is not recognized as an internal or external command, operable program or batch file.bu da bir çözüm değildir.

  2. cevaplar https://stackoverflow.com/a/35775493/1423507 ve https://stackoverflow.com/a/36516620/1423507 çalışır ancak java.exe1.7 kullanmaya geri dönüyorsunuz (ör. CurrentVersionkayıt defteri anahtarının değerini, bulunan java.exesürümle eşleşecek şekilde güncelleyin ) kullanıcılar %PATH%).

  3. java.exe1.8'in kullanıcılarda ilk bulunduğundan emin olun %PATH%(bunu nasıl yaptığınız anlamsızdır) yani:

    • kullanıcıları %PATH%dahil edecek şekilde güncelleyinC:\Program Files (x86)\Common Files\Oracle\Java\javapath edecek şekilde (bu dizindeki yürütülebilir dosyaların doğru olduğundan emin olun)
    • kullanıcıları %PATH%önce java ikili dosyalarınızın mutlak yolunu içerecek şekilde güncelleyin (set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%" )
    • set java belirli ortam değişkenleri ve güncelleme kullanıcıların %PATH%onlarla ( set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)

@whoever_that_downvotes - bu yanıt herhangi bir yapıcı geri bildirim olmadan geliştirilemez. "Neden" diye bir yorum bırakın ve bu yanıtı topluluğun yararına daha iyi hale getirebilirsiniz.
masseyb

2

Java çalıştıran bazı Windows hizmetlerinde bu hatayı aldım. Sonunda, makinemde java'nın diğer sürümlerini kaldırmaya çalıştım.

Sadece 1.8'i bıraktım ve şimdi her şey çalışıyor.


1

aribeiro cevabı benim için çalıştı - küçük değişikliklerle

  • C: \ ProgramData \ Oracle \ Java \ javapath başvurusunu kaldırdım; Path ortam değişkeninden
  • PATH ortam değişkenimde / jdkhome'a ​​/ yolunu / yolunu ilk girdi olarak yaptım. Bence tek gereken bu.

1

Bana gelince win7 64bit.

Java.exe javaw.exe javaws.exe dosyasını klasöre kopyalayın C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

ve sonra cmd'yi açın, java -version yazın.

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Yukarıdakilerden önce Registry'nin CurrentVersion'ın 1.8 olduğundan emin olun.

Kayıt düzenleyicisini açmak için BAŞLAT menüsünde "regedit" yazın

  1. Sol taraftaki kayıt defteri gezgini / ağaç menüsünde "HKEY_LOCAL_MACHINE" seçeneğine gidin
  2. "HKEY_LOCAL_MACHINE" kayıtlarında "YAZILIM" a tıklayın
  3. "YAZILIM" kayıtlarında "JavaSoft" u tıklayın
  4. "JavaSoft" kayıt listesi içinde "Java Runtime Environment" öğesini tıklayın, burada kurulu java'nın farklı sürümlerini görebilirsiniz
  5. "Java Runtime Environment" öğesini tıklayın - Sağ tarafta 4-5 satır göreceksiniz. Lütfen "CurrentVersion" öğesini seçin ve sağ tıklayın (değiştir seçeneğini seçin) sürümün "1.8" olduğundan emin olun

Bu gerçekten kötü bir fikir. Dosyaları zaten yolda olan bir klasöre taşımak yerine ikili dosyalar klasörü yola eklenmelidir. Başka birinin sistemdeki java'yı güncellemesi gerekiyorsa ve bu "çözüm" hakkında bilgisi yoksa korkunç bir baş ağrısına neden olabilir. Ve bu tam olarak operasyonun sorun kaynağı ... Bunun yerine yolunu düzelt.
Riwels

Değiştir Ben sadece KOPYALAYACAĞIM içine TAŞIYORUM ve gitmekte fayda var.
Matthieu

1

Bu problem için benim çözümüm, yukarıdakilerin hepsini okuyup denedikten sonra geldi.

Benim durumumda çıktıları kullanmak için Java'yı düşürmeye çalıştım Apache ActiveMQ. Tüm Java sürümlerini kaldırdıktan ve kayıt defterini temizledikten sonra aynı hatayı alıyordum

Hata: 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'kayıt defteri anahtarı' 1.7 'değerine sahip, ancak' 1.8 'gerekli. "

Benim durumumda ben javapath konumunu (açın ortam değişkenleri, düzenleme yoluna gitmek için gerekli C:\ProgramData\Oracle\Java\javapath) ve orada - (üç dosya java.exe, javaw.exe,javaws.exe JRE8 sürümden kalmıştır).

Bu gerçeği belirledikten sonra, onları dizinden aynı dosyalarla değiştirdim C:\Windows\SysWOW64(bunlar JRE7sürümden geliyordu ) ve hepsi mükemmel çalıştı.


1

En son otomatik Java güncellemesinden sonra, Java'yı komut isteminden çalıştıramadım.

Yol değişkenimde 'C: \ ProgramData \ Oracle \ Java \ javapath;' vardı

'C: \ ProgramData \ Oracle \ Java \ javapath;' içine cd yapamadım; mevcut olmadığı için komut istemi penceresinden.

C: \ ProgramData \ Oracle \ Java \ javapath'ı kaldırdım; ' yol değişkeninden alın ve 'C: \ Program Files \ Java \ jre1.8.0_141 \ bin;' ile değiştirin.


Bu bir cevaptan çok bir yorumdur. Soru çok özel bir araçla ilgili ve javanın tapuda bulunduğunu açıkça ortaya koyuyor.
GhostCat

1

JAVA_HOME değişkeninde jdk klasörünüzü tanımlamalısınız, değişken yolunuza% JAVA_HOME% ekleyin

Klasör sisteminizdeki java.exe, javaw.exe ve javaw dosyalarınızın adını silin veya değiştirin32

cmd.exe'yi çalıştırın, java sürümü şimdi JAVA_HOME'da tanımladığınız yeni sürümü alır.


1

Anand Gupta'nın cevabına ek olarak, ihtiyacınız olanın dışında başka hiçbir java kullanılmadığından emin olun. Çalıştırın which java( where javaWindows için) ve hangi java yürütülebilir dosyalarının kullanıldığını görün. Sadece kullanmak istemediklerinizi silin ve ihtiyacınız olan mevcut değilse PATH'e ekleyin.


0

Öncelikle Java 7'ye sahip olmalısınız. Eğer yoksa, önce onu kurun (Ne kullandığınızı bilmiyorum, Linux, Mac, yum, apt, homebrew, kendiniz bulmalısınız.)

Zaten Java 7'niz varsa, şunu çalıştırın:

echo $JAVA_HOME

Çıktı böyle bir şey olmalı: /usr/lib/jvm/java-8-oracle. Bu dizinin yakınında dizini görmelisiniz java-7. Bulduktan sonra koş

export JAVA_HOME=${java-7-dir}

{java-7-dir}Dizin yolunuzla değiştirin . Sonra komutunuzu çalıştırabilirsiniz.

Bu yalnızca geçici bir çözümdür. Kalıcı olarak değiştirmek için, yukarıdaki komutu ~/.bashrcdosyanıza ekleyin .

DÜZENLEME: Windows kullanıyorsanız , ortam değişkenini JAVA_HOMEJava 7 kurulum dizini yolunuza değiştirin.


@AnandGupta Windows kasasını ekledim.
mtyurt

Linux durumunda, JAVA_HOME'da Java ikili dosyasının yolunu sağlamanız gerekir. Örneğin, /usr/java/jdk1.5.0_07/bin/java. Windows durumunda, sadece kurulum dizini yapmalıdır.
Aditya K

0

Kısa katkım, Talend Open Studio 64 bit sürümü ile aynı sorunu paylaşmak için.

  1. Başlat .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe'yi manuel olarak başlatın (bir başlangıç ​​Windows menüsünü bağlamayın)
  2. ve bu kayıt defteri hata mesajı görünüyor

Bunu çözmek için c: \ ProgramData \ Oracle \ Java \ javapath \ üzerindeki tüm java.exe, javaw.exe ve javaws.exe dosyalarını kaldırın.

ve TOS 64 bit sürümü ile doğru şekilde başlar!


0

Sistem yolundan kaldırın:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

Ve java sürümünün 1.7'den 1.8'e yükseltilmesindeki sorunu çözecektir.


1
Bize nedenini söyler misiniz?
Vinay Prajapati

0

JRE 1.8 sürümünden başka bir java.exe, "yol" içinde olduğu bir yerde, mümkünse bulmanız ve silmeniz gerekir. jre'ye ihtiyaç duyan uygulamalar için kullanıcı geçici verilerinde olabilir.


0

Lütfen JAVA_BIN ve JAVA_HOME sistem değişkenini değiştirin ve ardından sistemi yeniden başlatın veya belki yeniden oturum açın. Bu hatayı alıyorsunuz çünkü hala jdk1.7 yolu. Windows'ta şu şekildedir: görüntü açıklamasını buraya girin


0

Sadece Java SE Runtime Environment JRE 7'yi Kurun!

Artık "Denetim Masası" ndaki "Programlar ve Özellikler" bölümünde "java 7" ve "java 8" i görüyorsunuz

Benim için çalıştı.


0

Bu soruna olası bir çözüm, Sencha CMD klasörüne, bu konu başlığında önerilen bir yarasa dosyası eklemektir Sencha Cmd 5 + Java 8 Hatası .

Parti, şu kodla "sencha.bat" adını alacaktır:

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

Sencha klasörüne yerleştirin, benim durumumda

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

Aşağıdaki adım, PATHEXT ortam değişkenini değiştirmektir. Mümkün olan en az etkiye sahip olmak için kullanıcı değişkenlerini değiştirin.

Değiştim

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

-e

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Buradaki fikir, windows'un .bat dosyalarını .exe dosyalarından önce çalıştırmasını sağlamaktır. Bu önemlidir çünkü sencha klasöründe zaten bir "sencha.exe" dosyası vardır. Ve komut satırına "sencha" yazarsanız, "sencha.bat" yerine "sencha.exe" çalıştırılacaktır.

İşe yarayan tek çözüm buydu çünkü izinler söz konusu olduğunda çok kısıtlıyım.


0

Sistemim: - Windows 8.1

Java Ortamları

  • C: \ JavaEnvironment \ Java \ jdk1.8.0_161
  • C: \ JavaEnvironment \ Java \ jdk1.7.0_75

Yakın zamanda Oracle 11g XE'yi kurdum ve komut isteminde "java" komutuna erişildiğinde belirtilen hata mesajını aldım.

Ortam değişkenlerimi kontrol ettim, diziyi kontrol ettim (önceki yanıtlarda belirtildiği gibi) ve sistem PATH değişkenimin ilk girdi olarak aşağıdaki girdiye sahip olduğunu tespit ettim:

C: \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

Sırayı değiştirdim ve JDK yolunu ilk girdi olarak tanımladım:

görüntü açıklamasını buraya girin

Aynı değişikliği Kullanıcı Değişkeni'ne de kopyaladım: Yol

görüntü açıklamasını buraya girin

Yukarıdaki aktiviteyi bitirdikten sonra komut istemini yeniden başlattım ve java -version komutunu çalıştırdım ve sorun ortadan kalktı. Java 8'i güncel sürüm olarak gösteriyordu.


-1

Ben de benzer bir sorun yaşadım. JDK ve JRE yolunu yol değişkeninin en üstüne taşımak sorunu çözdü (bu, System32 altında bulunanlara göre birinci önceliği alır)

Örneğin, işte benim:

görüntü açıklamasını buraya girin


-2

Program listenizden Java 8'i kaldırın. Aşağıdaki adımları takip ederek: -

Masaüstünüzden, ekranınızın sol alt tarafındaki Başlat Menüsüne (veya Top başlat) tıklayın. Kontrol Paneline gidin. Programlar ve Özellikler'e tıklayın. Java8'i seçin ve Kaldır'a tıklayın


-2

Görev yöneticisinde java ile ilgili tüm uygulamaları kapatın ve ardından Java.exe, Javaw.exe ve Jawaws.exe'yi C: \ windows \ System32'den silin

Bu probleminizi çözmeli... :)


Lütfen bunun eldeki sorunu nasıl çözeceğini açıklayabilir misiniz?
Muhammad Mamoor Khan

-3

sadece bunu yaptım ve işe yaradı

HKLM> YAZILIM> JavaSoft> Java Runtime Environment

sadece mevcut sürümü manuel olarak 1.7'ye değiştirin.

haha ... ama işe yaradı!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.