Exception in thread main java.lang.illegalargumentexception input == null! at


Содержание

Ошибка при попытке загрузки изображения с помощью ImageIO.read

После поиска аналогичных вопросов, которые я хотел бы задать следующий вопрос:

Я пытаюсь загрузить изображение из Google Static Maps, но я получаю эту ошибку: Exception in thread «main» java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source) at MapPicturePanel.main(MapPicturePanel.java:18)

Ниже приводится полный код этого класса:

Создан 10 дек. 11 2011-12-10 23:31:37 JavaNoob

1 ответ

Вы пытаетесь найти ресурс в вашем пути к классам (это то, что Class.getResource делает). Но похоже, что вы хотите загрузить изображение с внешнего URL-адреса.

Просто сделай это

Создан 10 дек. 11 2011-12-10 23:37:47 Kal

Большое спасибо. Он работает сейчас. Вы рекомендуете какие-либо учебные пособия для работы с изображениями и интерактивным рисунком? – JavaNoob 10 дек. 11 2011-12-10 23:49:41

Почему возникает ошибка Exception in thread «Thread-2» java.lang.IllegalStateException: Component must have a val >

Добрый день, уважаемые пользователи, не так давно начал изучать язык java.
Попытался добавить стратегию мультибуферизации, но компилятор не хочет запускать.

===== Ниже представлен Код======
import javax.swing.JFrame;

public class TetrisMain extends Canvas implements Runnable, KeyListener <

public static final int W >
public static void main(String[] args) <
JFrame frame = new JFrame(«Тетрис»);
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
TetrisMain tm = new TetrisMain();
frame.setVisible(true);
tm.start();
>

public void start() <
Thread t = new Thread(this);
t.setPriority(Thread.MAX_PRIORITY);
t.start();

>
public void run() <
boolean running = true;
while(running) <
update();
BufferStrategy buf = getBufferStrategy();
if(buf == null) <
createBufferStrategy(3);
continue;
>
Graphics2D g = (Graphics2D) buf.getDrawGraphics();
render(g);
buf.show();
>
>

public void update() <
>

public void render(Graphics2D g) <
g.setColor(Color.BLACK);
g.fillRect(0, 0,WIDTH, HEIGHT);

>
public void keyPressed(KeyEvent e)<

>
public void keyTyped(KeyEvent e) <
>

javax.imageio.IIOException: невозможно прочитать входной файл! на банке netbeans [дубликат]

Я хотел бы прочитать ресурс из моего jar так:

, и он отлично работает при запуске в Eclipse, но если я экспортирую его в банку, запустите его там IllegalArgumentException:

, и я действительно не знаю, почему, но с некоторым тестированием я обнаружил, что если изменить

, тогда он работает наоборот (он работает в jar, но не затмении).

Я использую Eclipse, а папка с моим файлом находится в папке класса.

9 ответов


Вместо того, чтобы пытаться адресовать ресурс в качестве файла , просто попросите ClassLoader вернуть InputStream для ресурса вместо getResourceAsStream :

Пока ресурс file.txt доступен в пути к классам, этот подход будет работать одинаково независимо от того, находится ли ресурс file.txt в файле classes/ ] или внутри jar .

URI is not hierarchical происходит потому, что URI для ресурса в файле jar будет выглядеть примерно так: file:/example.jar!/file.txt . Вы не можете прочитать записи в файле jar (файл zip ), как будто это был обычный старый файл .

Это объясняется ответами на:

После многократного поиска в Java единственное решение, которое, похоже, работает для меня, — это вручную прочитать файл jar, если вы не находитесь в среде разработки (IDE):

Примечание: приведенный выше код, похоже, работает правильно для файлов jar, если он находится в основном классе. Я не уверен, почему.

Вы также можете просто использовать java.nio. Вот пример того, как slurp в тексте из файла в resourcePath в пути к классам:

Чтобы получить доступ к файлу в банке, у вас есть две возможности:

  • Поместите файл в структуру каталогов, соответствующую вашему имени пакета (после извлечения файла .jar он должен находиться в том же каталоге, что и .class file), затем обращайтесь к нему с помощью getClass().getResourceAsStream(«file.txt»)
  • Поместите файл в корневой каталог (после извлечения файла .jar, он должен быть в корневом каталоге), затем обращайтесь к нему с помощью Thread.currentThread().getContextClassLoader().getResourceAsStream(«file.txt»)

Первый вариант может не работать, если jar используется в качестве плагина.

Thread: java.lang.IllegalArgumentException: im == null!

LinkBack
Thread Tools
Search Thread
Display
  • Linear Mode
  • Switch to Hybrid Mode
  • Switch to Threaded Mode

java.lang.IllegalArgumentException: im == null!

I am getting the following output after executing the attached code:

Can anyone please give me a solution to this problem, or can anyone suggest me any alternative ways to write image after bit-manipulation.

Thanks in advance in anticipation of an early reply.

The problem is that at line 34: «new_img = ImageIO.read(in);», ImageIO can’t read the InputStream.


And that was because I modified some header information of the image..can you please tell me how can get header information of an image format..

I don’t know, I’ve never had to manually edit header information. Google might help in this situation.

Как понять NullPointerException

Эта простая статья скорее для начинающих разработчиков Java, хотя я нередко вижу и опытных коллег, которые беспомощно глядят на stack trace, сообщающий о NullPointerException (сокращённо NPE), и не могут сделать никаких выводов без отладчика. Разумеется, до NPE своё приложение лучше не доводить: вам помогут null-аннотации, валидация входных параметров и другие способы. Но когда пациент уже болен, надо его лечить, а не капать на мозги, что он ходил зимой без шапки.

Итак, вы узнали, что ваше приложение упало с NPE, и у вас есть только stack trace. Возможно, вам прислал его клиент, или вы сами увидели его в логах. Давайте посмотрим, какие выводы из него можно сделать.

NPE может произойти в трёх случаях:

  1. Его кинули с помощью throw
  2. Кто-то кинул null с помощью throw
  3. Кто-то пытается обратиться по null-ссылке

Во втором и третьем случае message в объекте исключения всегда null, в первом может быть произвольным. К примеру, java.lang.System.setProperty кидает NPE с сообщением «key can’t be null», если вы передали в качестве key null. Если вы каждый входной параметр своих методов проверяете таким же образом и кидаете исключение с понятным сообщением, то вам остаток этой статьи не потребуется.

Обращение по null-ссылке может произойти в следующих случаях:

  1. Вызов нестатического метода класса
  2. Обращение (чтение или запись) к нестатическому полю
  3. Обращение (чтение или запись) к элементу массива
  4. Чтение length у массива
  5. Неявный вызов метода valueOf при анбоксинге (unboxing)

Важно понимать, что эти случаи должны произойти именно в той строчке, на которой заканчивается stack trace, а не где-либо ещё.

Рассмотрим такой код:

Откуда-то был вызван метод handle с какими-то параметрами, и вы получили:

В чём причина исключения — в f, d или d.val? Нетрудно заметить, что f в этой строке вообще не читается, так как метод format статический. Конечно, обращаться к статическому методу через экземпляр класса плохо, но такой код встречается (мог, например, появиться после рефакторинга). Так или иначе значение f не может быть причиной исключения. Если бы d был не null, а d.val — null, тогда бы исключение возникло уже внутри метода format (в девятой строчке). Аналогично проблема не могла быть внутри метода getValue, даже если бы он был сложнее. Раз исключение в пятнадцатой строчке, остаётся одна возможная причина: null в параметре d.

Вот другой пример:

Снова вызываем метод handle и получаем

Теперь метод format нестатический, и f вполне может быть источником ошибки. Зато s не может быть ни под каким соусом: в девятой строке уже было обращение к s. Если бы s было null, исключение бы случилось в девятой строке. Просмотр логики кода перед исключением довольно часто помогает отбросить некоторые варианты.

С логикой, конечно, надо быть внимательным. Предположим, условие в девятой строчке было бы написано так:

Теперь в самой строчке обращения к полям и методам s нету, а метод equals корректно обрабатывает null, возвращая false, поэтому в таком случае ошибку в двенадцатой строке мог вызвать как f, так и s. Анализируя вышестоящий код, уточняйте в документации или исходниках, как используемые методы и конструкции реагируют на null. Оператор конкатенации строк +, к примеру, никогда не вызывает NPE.

Вот такой код (здесь может играть роль версия Java, я использую Oracle JDK 1.7.0.45):

Вызываем метод dump, получаем такое исключение:

В параметре pw не может быть null, иначе нам не удалось бы войти в метод print. Возможно, null в obj? Легко проверить, что pw.print(null) выводит строку «null» без всяких исключений. Пойдём с конца. Исключение случилось здесь:

В строке 473 возможна только одна причина NPE: обращение к методу length строки s. Значит, s содержит null. Как так могло получиться? Поднимемся по стеку выше:

В метод write передаётся результат вызова метода String.valueOf. В каком случае он может вернуть null?

Единственный возможный вариант — obj не null, но obj.toString() вернул null. Значит, ошибку надо искать в переопределённом методе toString() нашего объекта MyObject. Заметьте, в stack trace MyObject вообще не фигурировал, но проблема именно там. Такой несложный анализ может сэкономить кучу времени на попытки воспроизвести ситуацию в отладчике.

Не стоит забывать и про коварный автобоксинг. Пусть у нас такой код:

Цукерберг рекомендует:  Php - Помогите единажды распечатать переменную

И такое исключение:

На первый взгляд единственный вариант — это null в параметре obj. Но следует взглянуть на класс MyContainer:

Мы видим, что getCount() возвращает Integer, который автоматически превращается в int именно в третьей строке TestNPE.java, а значит, если getCount() вернул null, произойдёт именно такое исключение, которое мы видим. Обнаружив класс, подобный классу MyContainer, посмотрите в истории системы контроля версий, кто его автор, и насыпьте ему крошек под одеяло.

Помните, что если метод принимает параметр int, а вы передаёте Integer null, то анбоксинг случится до вызова метода, поэтому NPE будет указывать на строку с вызовом.

В заключение хочется пожелать пореже запускать отладчик: после некоторой тренировки анализ кода в голове нередко выполняется быстрее, чем воспроизведение трудноуловимой ситуации.


Exception in thread «main» java.lang.IllegalArgumentException: Unknown result code 131 #18

Comments

Copy link Quote reply

kk00ss commented Aug 7, 2020

Code is based on snippet from another issue

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 7, 2020

Could it be due to the usage of 32bit built of LMDB ? This happens on windows 10, I’ll get my hands on Linux env soon to test it.

This comment has been minimized.

Copy link Quote reply

benalexau commented Aug 8, 2020 •

LmdbJava only supports 64-bit platforms. There are a few reasons for this:

  1. The main use case for LmdbJava is storing large volumes of data. 32-bit is limited to roughly 3 GB. If an application has more modest data storage requirements, chances are it could use a different Java persistence API and achieve performance and safety benefits by staying completely within the Java heap and using pure Java code (side-stepping the Unsafe / direct / JNI-related calls).
  2. LmdbJava has many locations where memory addresses are copied between Java and C. We’ve used long as it’s 64-bit and this simplifies efficient interop via JNR-FFF and Unsafe . If we supported 32-bit we’d require conditional logic to handle the C-side void * being 32-bits and our statically-determined struct offsets no longer being accurate. We’d also need to conditionally handle address read/writes, as we couldn’t read/write a long to an offset containing a 32-bit memory address.

I can see some use cases for 32-bit support (eg small developer machines using a 32-bit OS for R&D and then deploying to a 64-bit server) but I’m unsure if it’s worth the extra complexity in LmdbJava.

Assuming others agree with the above, what I’d suggest is Library ‘s static initializer be modified to raise a 32-bit architecture exception message. While the 32-bit requirement is mentioned in the TutorialTest we encourage people to read to learn about LmdbJava, it’s very easy to miss and a more descriptive exception would save users a lot of time and effort checking their code etc.

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 8, 2020

I’m running 64 bit OS, it’s just 2GB file size where the problem manifests
itself
8 Авг 2020 г. 3:29 пользователь «Ben Alex» notifications@github.com
написал:

LmdbJava only supports 64-bit platforms. There are a few reasons for this:

  1. The main use case for LmdbJava is storing large volumes of data.
    32-bit is limited to roughly 3 GB. If an application has more modest data
    storage requirements, chances are it could use a different Java persistence
    API and achieve performance and safety benefits by staying completely
    within the Java heap and using pure Java code (side-stepping the Unsafe
    / direct / JNI-related calls).
  2. LmdbJava has many locations where memory addresses are copied
    between Java and C. We’ve used long as it’s 64-bit and this simplifies
    efficient interop via JNR-FFF and Unsafe. If we supported 32-bit we’d
    require conditional logic to handle the C-side void * being 32-bits
    and our statically-determined struct offsets no longer being accurate.
    We’d also need to conditionally handle address read/writes, as we couldn’t
    read/write a long to an offset containing a 32-bit memory address.

I can see some use cases for 64-bit support (eg small developer machines
using a 32-bit OS for R&D and then deploying to a 64-bit server) but I’m
unsure if it’s worth the extra complexity in LmdbJava.

Assuming others agree with the above, what I’d suggest is Library’s
static initializer be modified to raise a 32-bit architecture exception
message. While the 32-bit requirement is mentioned in the TutorialTest we
encourage people to read to learn about LmdbJava, it’s very easy to miss
and a more descriptive exception would save users a lot of time and effort
checking their code etc.

This comment has been minimized.

Copy link Quote reply


kk00ss commented Aug 8, 2020

Same exception is thrown when I’m trying to allocate 10GB Environment on windows, with same code snippet. @benalexau — it would be cool if you tried to reproduce the issue with my code snippet,

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 8, 2020

I’ve installed linux to test same code, results are very strange, on the system with 16GB RAM and 50+ GB SSD (there is a lot of space still)

This comment has been minimized.

Copy link Quote reply

benalexau commented Aug 9, 2020

On my tests this appears to be connected with the creation of the 2,048 Env :

I suspect this is being caused by the creation of so many Env s in a single process and we are hitting an internal LMDB limit of some type, but we would need to reach out to Howard Chu to confirm (I did a quick grep of LMDB source code but didn’t find an obvious 2,048 value, but returning ENOMEM is a common return code from LMDB). Have you tried something simpler, like running the provided tutorial on this machine?

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 9, 2020 •

First — environment is closed before new one is created, if the driver works correctly there should be no more than 1 open Environment at any given moment.
Second — I’m pretty sure that hard limit in LMDB is 64 for the number of open Environments.
Third — If you change MB to GB (and the corresponding number of course) than you will see such an output

Which looks like the problem is with the MMap size.
I’ve tested same code on Fedora Linux and got same result. (I’ve posted it in previous comment, different exception — same steps to reproduce)
I’ve heard reports from people using LMDB in prod, I’ve tested RocksDB JNI and everything was fine.
UPDATE: I see no point in trying something simpler . The problem is with the size of allocated MMap.

This comment has been minimized.

Copy link Quote reply

krisskross commented Aug 9, 2020

Might be that ENOMEM originates from LMDB since mdb_env_create returns this code if the calloc call fails.

This comment has been minimized.

Copy link Quote reply

benalexau commented Aug 10, 2020

Found the issue:

As such 1024 * 1024 * 2048 overflows the integer being passed to Builder.setMapSize(long) . On Linux that manifests itself as an ENOMEM . On Windows it manifests itself as error code 131, which MSDN Windows System Error Codes (0-499) defines as:

ERROR_NEGATIVE_SEEK
131 (0x83)
An attempt was made to move the file pointer before the beginning of the file.

The fix is nice and simple. In my earlier test, add a cast:

On my machine I was able to use the above test to create and close 200,000 Env s without error.


To avoid new users encountering this in the future, I have also added a check to Builder.setMapSize(long) so an IllegalAgumentException is raised if a negative value is given. There is a corresponding test to prove it works. I did not add similar checks for the other Builder methods as I don’t consider them likely to be calculated and subject to overflow risk, whereas a map size calculation is more likely.

Would you please try the above cast and confirm it fixes your issue?

This comment has been minimized.

Copy link Quote reply

benalexau commented Aug 10, 2020

Also from today we now automatically publish snapshots in the OSS Sonatype Snapshots Repo so if you like you might want to test against version 0.0.3-SNAPSHOT. This should return the new exception if a negative map size is specified.

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 10, 2020 •

Well I’m ashamed of that error, but fixing it doesn’t yield any progress

This code still throws the same exception on attempt to resize environment

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 10, 2020 •

Here is smaller snippet that reproduces same issue:

This comment has been minimized.

Copy link Quote reply

benalexau commented Aug 11, 2020

I put your code fragment into a test case as follows:

Then with mvn clean test I receive:

It’s possible this was corrected as part of commit d83d542. Would you like to give it another try with a snapshot release? If you still encounter difficulties, would you mind please providing a complete executable test case which reproduces it on your machine for me to try out?

This comment has been minimized.

Copy link Quote reply

kk00ss commented Aug 11, 2020

That doesn’t work with 0.0.2.
How do I load snapshot with Maven ?

I put your code fragment into a test case as follows:

import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.ThreadLocalRandom;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

public class QuickTest <


@rule
public final TemporaryFolder tmp = new TemporaryFolder();

@test
public void test() throws IOException <
long size = 1;
long GB = 1024 * 1024 * 1024;
File path = tmp.newFolder();
Env env = Env.create().setMapSize(GB).setMaxDbs(1).open(path);
Dbi db = env.openDbi(«test», DbiFlags.MDB_CREATE);

Цукерберг рекомендует:  Тест по Python. Начальный уровень

Then with mvn clean test I receive:

T E S T S

Running org.lmdbjava.CursorIteratorTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.475 sec — in org.lmdbjava.CursorIteratorTest
Running org.lmdbjava.ResultCodeMapperTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec — in org.lmdbjava.ResultCodeMapperTest
Running org.lmdbjava.MetaTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec — in org.lmdbjava.MetaTest
Running org.lmdbjava.LibraryTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec — in org.lmdbjava.LibraryTest
Running org.lmdbjava.EnvTest
Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.314 sec — in org.lmdbjava.EnvTest
Running org.lmdbjava.QuickTest
written 1
written 2
written 3
map full, old size = 1 GB
new mapSize = 2147483648
written 4
written 5
written 6
written 7
map full, old size = 2 GB
new mapSize = 3221225472
written 8
written 9
written 10
written 11
map full, old size = 3 GB
new mapSize = 4294967296
written 12
written 13
written 14
written 15
map full, old size = 4 GB
new mapSize = 5368709120
written 16
written 17
written 18
written 19
map full, old size = 5 GB
new mapSize = 6442450944
written 20
written 21
written 22
written 23
map full, old size = 6 GB
new mapSize = 7516192768
written 24
written 25
written 26
written 27
map full, old size = 7 GB
new mapSize = 8589934592
written 28
written 29
written 30
written 31
map full, old size = 8 GB
new mapSize = 9663676416
written 32
written 33
written 34
written 35
map full, old size = 9 GB
new mapSize = 10737418240
written 36
written 37
written 38
written 39
map full, old size = 10 GB
new mapSize = 11811160064
written 40
written 41
written 42
written 43
map full, old size = 11 GB
new mapSize = 12884901888
written 44
written 45
written 46
written 47
map full, old size = 12 GB
new mapSize = 13958643712
written 48
written 49
written 50
written 51
map full, old size = 13 GB
new mapSize = 15032385536
written 52
written 53
written 54
written 55
map full, old size = 14 GB
new mapSize = 16106127360
written 56
written 57
written 58
written 59
map full, old size = 15 GB
new mapSize = 17179869184
written 60
written 61
written 62
written 63
map full, old size = 16 GB
new mapSize = 18253611008
written 64
written 65
written 66
written 67
map full, old size = 17 GB
new mapSize = 19327352832
written 68
written 69
written 70
written 71
map full, old size = 18 GB
new mapSize = 20401094656
written 72
written 73
written 74
written 75
map full, old size = 19 GB
new mapSize = 21474836480
written 76
written 77
written 78
written 79
map full, old size = 20 GB
new mapSize = 22548578304
written 80
closing db
closing env
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.002 sec — in org.lmdbjava.QuickTest
Running org.lmdbjava.TxnTest
Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.036 sec — in org.lmdbjava.TxnTest
Running org.lmdbjava.CursorTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.18 sec — in org.lmdbjava.CursorTest
Running org.lmdbjava.ByteBufferProxyTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec — in org.lmdbjava.ByteBufferProxyTest
Running org.lmdbjava.MaskedFlagTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec — in org.lmdbjava.MaskedFlagTest
Running org.lmdbjava.TutorialTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 sec — in org.lmdbjava.TutorialTest
Running org.lmdbjava.DbiTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.718 sec — in org.lmdbjava.DbiTest

Tests run: 103, Failures: 0, Errors: 0, Skipped: 0

It’s possible this was corrected as part of commit d83d542
d83d542.
Would you like to give it another try with a snapshot release? If you still
encounter difficulties, would you mind please providing a complete
executable test case which reproduces it on your machine for me to try out?

Exception in thread «main» java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source)

I am following a simple java game making tutorial but when I tried to import my own files (images) into java, they did not appear. Instead, a blank canvas pops up when the code is run. I have a windows laptop. What is the path that is needed for my code to work?

I’ve tried many things, such as

but these would still yield the same blank canvas as a result.

These are the lines of code giving me errors:

The desired output is the image, GrassTile, to be on the canvas at the point 0,0 when the class is run.

Actual results are a blank canvas.

See also questions close to this topic

I want to create a QR scan code system using ZXingScannerView, but i want to use this interface not in base class. I decided to create a xml file when I have just ZXingScannerView and I call functions on this, but it’s not working.

This is my class when I run my Code Scanner by button click:

And my CodeScanner class

I am doing an insertion in a mysql database through a jdbc connection, which connects perfectly, that if when I do the PreparedStatement, Tomcat throws me a sql error that says the following:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘. )’ at line 1

The question is that when I do the query through a statement, it performs the query without any problem, which makes me suspect that the error is actually in the PreparedSatement. Here I leave the code.

I will also leave the code with the preparedstatement, so you can see that this does work.

Please be patient with me, I’m a student and thanks in advance.

I have an application that I built with Spring MVC (so it’s a web front end), Spring Data and so on. It runs on an embedded Tomcat and I can reach the index by:

Going to «https://localhost:8443» in a browser or curl

(I have a couple of runtime configurations in Eclipse that make this faster and easier as well.)

Right now, everything is in maven, and everything builds (including with standard unit tests) by using:

(This gives me a jar file, a sources jar, etc.)


To do my front-end and integration testing, I need to have the application running. Basically, I need a fork or multiple threads (I guess that’s right terminology?) where the first one will run my application or something, then the second one will run the tests.

Right now I’m trying to fiddle with maven-cargo2-plugin, but it’s horking because it is having issues with the fact that my application has an embedded tomcat already running. Which makes sense—if cargo is starting a tomcat, it doesn’t want to find one already running.

I’m pretty sure I’m not the only one doing this, but I’m at a loss. I’ve tried going through spring-boot-test to load the application context, and that isn’t enough for my front end tests (HTMLUnit/Selenium).

I’ve gotten failsafe set up and this all runs in:

But I’m confused on how to configure the container for Cargo. Is this an «embedded» type? An «installed» type? «remote» (even though it’s on the same machine)?

Like I said, this is the final lap. We have an executable jar already. I just need it to start up and then run until the verify step is over.

Trying to display images of various sizes and aspect ratios at 50% of their native sizes.

– Scaling them down beforehand isn’t an option, as they look very low res on a high res monitor.

– width: 50% scales them down based on width of container div, not original image size, so this doesn’t work.

– transform: scale(0.5) scales the image correctly, but parent div retains original size.

– almost solves the issue for me, since this correctly scales the image AND the parent div scales down to fit it. HOWEVER, the parent div needs to have a max-width specified, which seems to be interfering with this approach. I’ve deduced that where an original image exceeds the width of the parent div, it is already scaled down from its original size, and the onload() function then scales down from this reduced version of the image, rather than from the original size.

The images in this example are images of tables – all cells of all tables should be the same width and height. This is the case when the images are all full size, but note in their scaled down versions some of the tables have much smaller cells — this happens where the original sized images (4x bigger) exceeded the width of the page.

Very similar to this thread, but I couldn’t find a solution there.

I’ve been working on a simple box blur function that averages the RGB values of pixels on a source image and writes it to a destination. My ImageView displays 1280 x 720 images properly when it loads them, and it displays the proper blur. The ImageView can load the 1920 x 1080 images, but after the blur, it just displays gray. Have no idea what might be happening here: no error messages, code under iv.setImage() still runs, and ImageView.getImage() is not null.

I’ve tried both static and non-static variables + methods, so that isn’t impacting it. Any thoughts would be appreciated!

I have a single image and I’m trying to induce textural «coarseness». I am trying to visualize coarseness changes in an existing image by creating slightly more coarser version of it until I reach some maximum.

So far I use a open dataset of textures and just loop through calculating a textural coarseness metric «Small Area Emphasis» using the «Radiomics» texture package.

Here is my code thus far

Is there a way to pick a set image, and modify it’s pixels in order to visualize its coarseness (without changing the resolution)?

I want to write a code that finds the files inside my external hard drive without naming the letter of the drive (since it might change from computer to another depending on port). The app that I run is from the external hard drive itself.

Цукерберг рекомендует:  Удаленка - Нужен Левел Дизайнер, срочно!

Here is an example of what i’m using currently:

But if I try to change my external HDD to another port it will become another letter (or in a different computer). How can I make the code work ignoring the first letter?

But it doesn’t work at all.

I have a big Delphi project organized like this (simplified):

So, each Project folder contains the .dprog , .pas and .dfm needed for the project. The COMMON folder contains the .pas used by more than one project. And the Lib folders contain external resources ( .pas and .dfm ) also needed for more than one project Then in FinalBuilder I have my ProjectBuilder.fbp8 and Project.ini files.

The idea is, the ProjectBuilder will compile every Delphi Project — one after another.

However, there is some problem with the Library Path.

When i run the Final Builder project, it’ll ask which Delphi Project i want to compile. Then, for each, it’ll load the associated variables from Project.ini , including the LIBRARY_PATH. Then it tries to compile the Delphi project. And here it fails because the Delphi project can’t find some units: exactly those who are in the LIBRARY_PATH.


I’ve tried to run only one of the Delphi projects (let’s say, Project A) with Delphi IDE, but it won’t work for the same reason: the Library Path is not given inside the project. The project only knows the path to its source files in Project A and COMMON folders, not for the files in the Lib folders. So, I could add the path in Delphi IDE but I wont because:

1) there are a lot to add, i’ll have to do it for each project, and they’re not the same for each project.

2) i’m not supposed to touch the delphi project.

However, i’ve tried to add the firsts ones, and then the compilation goes to next step (i mean, to next «not found unit»). So the path is really the problem: for some Reason, it didn’t get the path from Final Builder.

That’s why I’m trying to understand what’s going wrong with the ProjectBuilder. When I click on the Build Delphi line, where the delphi project should be built, I can see that the Library Path has been correctly set (in Directories tab) and the box «Use global delphi Library path» is not set, but the box «Always use search path from project settings File» is set, which seem totally right to me.

Aslo some interesting points:

1) I’m using FinalBuilder8 and Delphi10 Tokyo.

2) when i click on the Build Delphi line, i got a weird error message: «Unable to load icon (probably corrupt): Pixel Format Not Valid for Icons or Cursors». Then i click «ok» and the window opens normally.

3) In the «General» tab of this window, i got this Quick Help:

However, as said, I have Delphi 10.2 Tokyo. I’ve tried to change this in «Tools/options/compiler» to set the default compiler version to Delphi XE8, but the result was the same. No idea if this can be a problem.

4) The source code comes from another computer, where the compilation works, but I know nothing about this computer. However, it was supposed to be «ready to run». Maye there’s just some FinalBuilder settings I’m missing?

So, to summarize: when I run the ProjectBuilder in FinalBuilder, the Library Path is correctly defined but the Delphi project react as it doesn’t have it and the build fails. Anyone has an idea why? I’m totally new to FinalBuilder and Delphi.

I recently updated my User folder name in C:/Users because it had spaces in it. Now I can’t execute my scripts correctly [https://i.stack.imgur.com/WSrMl.png] I have a shell script that will execute a list of python script depending on what we choose but as my User folder had spaces in it, I would get some errors. Now I’ve updated it so I won’t have spaces anymore. I updated all my environment variables to match the new name but it still tries to get python.exe from my previous path and not the new one. I’ve updated the project interpreter but still don’t work.

Do you guys have any idea where I should update ma path?

I’d appreciate some tips so I can get myself on the right track. I am trying to print common values from two int arrays without repetition. I can not use any strings, collections, extra arrays or manipulate existing arrays, and I can only use the java.lang package.

This is my code for now :

-What prints with my current code: 0 2 16 9 1 -8 9 9 3 0 1 -8 2
-What I want to print (order might differ): 0 2 16 9 1 -8 3

An idea I had was to check the first array for duplicates using another for loop and only continue to the main loop (which checks for common elements) if it is not a duplicate, but I am not sure how to go about doing this or whether it’s even doable. All my attempts of implementing this idea are failing so far.

I wrote a code snippet with the for loop that checks for duplicates (but not sure what to do with it) :

I had multiple ideas of how I could solve this but the task rules have succeeded in forbidding all my possible solutions, please help

I’m trying to learn how to read floats from a .txt files for an assignment. The end goal is to sum the total of the floats in each line. I’m stuck as I know how to read the file and use a while loop to read each line individually, but I don’t know how to refer to each individual float in the line.

Need to write a program that simulates a game of dice. 2 players take alternate turns rolling 2 dice. On each turn, they record the sum of the two dice and add this to their total. If a player rolls a doublet (both dice have the same value), then the player gets to roll again. The first player to reach a total of 75 will win

javax.imageio.IIOException: невозможно прочитать входной файл! на банке netbeans [дубликат]

Я хотел бы прочитать ресурс из моего jar так:

, и он отлично работает при запуске в Eclipse, но если я экспортирую его в банку, запустите его там IllegalArgumentException:

, и я действительно не знаю, почему, но с некоторым тестированием я обнаружил, что если изменить

, тогда он работает наоборот (он работает в jar, но не затмении).

Я использую Eclipse, а папка с моим файлом находится в папке класса.


9 ответов

Вместо того, чтобы пытаться адресовать ресурс в качестве файла , просто попросите ClassLoader вернуть InputStream для ресурса вместо getResourceAsStream :

Пока ресурс file.txt доступен в пути к классам, этот подход будет работать одинаково независимо от того, находится ли ресурс file.txt в файле classes/ ] или внутри jar .

URI is not hierarchical происходит потому, что URI для ресурса в файле jar будет выглядеть примерно так: file:/example.jar!/file.txt . Вы не можете прочитать записи в файле jar (файл zip ), как будто это был обычный старый файл .

Это объясняется ответами на:

После многократного поиска в Java единственное решение, которое, похоже, работает для меня, — это вручную прочитать файл jar, если вы не находитесь в среде разработки (IDE):

Примечание: приведенный выше код, похоже, работает правильно для файлов jar, если он находится в основном классе. Я не уверен, почему.

Вы также можете просто использовать java.nio. Вот пример того, как slurp в тексте из файла в resourcePath в пути к классам:

Чтобы получить доступ к файлу в банке, у вас есть две возможности:

  • Поместите файл в структуру каталогов, соответствующую вашему имени пакета (после извлечения файла .jar он должен находиться в том же каталоге, что и .class file), затем обращайтесь к нему с помощью getClass().getResourceAsStream(«file.txt»)
  • Поместите файл в корневой каталог (после извлечения файла .jar, он должен быть в корневом каталоге), затем обращайтесь к нему с помощью Thread.currentThread().getContextClassLoader().getResourceAsStream(«file.txt»)

Первый вариант может не работать, если jar используется в качестве плагина.

Почему возникает ошибка Exception in thread «Thread-2» java.lang.IllegalStateException: Component must have a val >

Добрый день, уважаемые пользователи, не так давно начал изучать язык java.
Попытался добавить стратегию мультибуферизации, но компилятор не хочет запускать.

===== Ниже представлен Код======
import javax.swing.JFrame;

public class TetrisMain extends Canvas implements Runnable, KeyListener <

public static final int W >
public static void main(String[] args) <
JFrame frame = new JFrame(«Тетрис»);
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
TetrisMain tm = new TetrisMain();
frame.setVisible(true);
tm.start();
>

public void start() <
Thread t = new Thread(this);
t.setPriority(Thread.MAX_PRIORITY);
t.start();

>
public void run() <
boolean running = true;
while(running) <
update();
BufferStrategy buf = getBufferStrategy();
if(buf == null) <
createBufferStrategy(3);
continue;
>
Graphics2D g = (Graphics2D) buf.getDrawGraphics();
render(g);
buf.show();
>
>

public void update() <
>

public void render(Graphics2D g) <
g.setColor(Color.BLACK);
g.fillRect(0, 0,WIDTH, HEIGHT);

>
public void keyPressed(KeyEvent e)<

>
public void keyTyped(KeyEvent e) <
>

Ява.ленг.ExceptionInInitializer ошибка, пожалуйста, объясните

Это область кода, которая вызывает эту ошибку:

И более конкретно, эти точные линии;

Я попытался удалить throw new RuntimeException, но затем Eclipse говорит мне, что public static loT нуждается в выражении return, хотя, когда я сохраняю эту строку кода в моем файле класса, я продолжаю получать эту ошибку, и моя программа просто рухнет.

Я использую LWJGL в Eclipse. Этот класс пытается загрузить файл текстуры для присвоения определенных объектов.

Я хотел бы знать, что происходит, почему это происходит, если кто-то знает, как это исправить, и если это можно исправить. Если вам нужна дополнительная информация, или это (по какой-то причине) неясно, о чем я прошу, просто оставьте комментарий, а не отмените это, потому что я действительно хотел бы исправить это.

EDIT: thats to @RobHruska and @dhamibirendra for the original suggestion on using e.printStackTrace ().

Вот обновленный журнал ошибок:

По-видимому, он не читает мой файл с изображением.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих